下面是從Python文檔的示例代碼:指示隊列中作業的結束?
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
我修改它適合我的使用情況是這樣的:
import threading
from Queue import Queue
max_threads = 10
q = Queue(maxsize=max_threads + 2)
def worker():
while True:
task = q.get(1)
# do something with the task
q.task_done()
for i in range(max_threads):
t = threading.Thread(target=worker)
t.start()
for task in ['a', 'b', 'c']:
q.put(task)
q.join()
當我執行它,調試器說,所有工作被執行,但q.join()似乎永遠等待。我如何向已發送所有任務的工作線程發送信號?
最近可能的打印錯誤是:當循環變量爲'tasks'時,是否打算將'task'放入隊列?我不這麼認爲...... –
是的,一個錯字。謝謝,我編輯了它。 – d33tah
排隊包含thread.exit()的任務嗎? –