Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3344
| From | Stephane Tougard <stephane@sdf.org> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Multythread et Queue en Python |
| Date | 2020-05-14 09:24 +0000 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <r9j2o8$1iql$1@gioia.aioe.org> (permalink) |
Bonjour,
J'ai un programme multi-threadé en Python qui parle avec une base
Postgres. Pour éviter les problèmes d'accès concurrentiels avec la base,
je crée un thread qui va recevoir les requêtes des autres threads via
queue.get et queue.put (il ne fait que des insert, donc je n'ai pas
besoin de vérifier la valeur de retour de la requete).
Mon problème est que si je limite à 10 threads, no problems, tout
fonctionne.
Mais si je monte à 100 threads, le programme se bloque (visiblement sur
lock_acquire()).
Tous les put() et get() sont avec True et un timeout de 5 secondes.
Avant de rentrer dans le détail du code, y-a-t-il quelque chose
d'évident que je ne sais pas ? genre faire 100 threads avec Python, je
suis en pleine science fiction ou le global lock est incapable de gérer
plus de 15 threads correctement ?
La fonction du thread qui gère les requetes SQL
def execute_sql(q):
print("Start SQL Thread")
while True:
try:
data = q.get(True,5)
except:
print("No data")
continue
print("RECEIVED SQL ORDER")
print(data)
print("END")
if data == "EXIT":
return
try:
request = data['request']
arg = data['arg']
ref.execute(request,arg)
except:
print("Can not execute SQL request")
print(data)
L'appel de ce thread depuis un autre thread
sql = dict()
sql['request'] = "update b2_user set credit = credit -%s where id = %s"
sql['arg'] = (i,username,)
try:
q.put(sql,True,5)
except:
print("Can not insert data")
Et le lancement du thread SQL
q = qu.Queue()
t = th.Thread(target = execute_sql, args = (q,))
t.start()
Back to fr.comp.lang.python | Previous | Next — Next in thread | Find similar
Multythread et Queue en Python Stephane Tougard <stephane@sdf.org> - 2020-05-14 09:24 +0000 Re: Multythread et Queue en Python Artis Sideley <sideley@yahoo.com> - 2020-06-18 02:37 -0700
csiph-web