objectif
Mettre en place des workers simples pour traiter des jobs en parallèle.
code minimal
import threading, queue
q = queue.Queue()
out = []
lock = threading.Lock()
def worker():
while True:
item = q.get()
if item is None:
q.task_done()
break
res = item * item
with lock:
out.append(res)
q.task_done()
threads = [threading.Thread(target=worker) for _ in range(2)]
for t in threads: t.start()
for i in range(5): q.put(i)
for _ in threads: q.put(None)
q.join()
for t in threads: t.join()
print(sorted(out) == [0,1,4,9,16]) # attendu: True
utilisation
print(True)
variante(s) utile(s)
import queue
q = queue.Queue(maxsize=1)
print(q.maxsize == 1)
notes
- Envoyez des sentinelles (None) pour arrêter proprement les workers.
- Protégez les structures partagées via verrous (ou utilisez Queue).