1
我有一些代碼將工作添加到一個隊列中,並由多個工作人員處理,然後將結果放入另一個隊列,並由他們處理最後的工人。當我有多個生產者將材料添加到此結果隊列中時,如何可靠地指示collector
進程沒有更多要處理的內容?告訴多個生產者的消費者沒有更多的結果
import multiprocessing
import time
J = multiprocessing.Queue()
R = multiprocessing.Queue()
def intermediate_worker(jobs, results):
while True:
task = jobs.get()
if task is None:
jobs.put(None)
break
print 'working', task
results.put(task)
def collector(result_queue) :
total = 0
while True :
result = result_queue.get()
total += result
print 'collection', total
[multiprocessing.Process(target=intermediate_worker, args=(J,R)).start()
for i in xrange(2)]
multiprocessing.Process(target=collector, args=(R,)).start()
for chunk_dummy in xrange(10) :
J.put(chunk)
J.put(None)