1
dispQ = Queue.Queue()
stop_thr_event = threading.Event()
def worker (stop_event):
while not stop_event.wait(0):
try:
job = dispQ.get(timeout=1)
job.do_work() # does some work and may put more jobs in the dispQ
dispQ.task_done()
except Queue.Empty, msg:
continue
t1 = threading.Thread(target=worker, args=(stop_thr_event,))
t1.daemon = True
t1.start()
t2 = threading.Thread(target=worker, args=(stop_thr_event,))
t2.daemon = True
t2.start()
# put some initial jobs in the dispQ here
while True:
if dispQ.qsize() == 0:
break
else:
# do something important
stop_thr_event.set()
t1.join()
t2.join()
問題:
dispQ.qsize爲0,當工人FUNC內,工作是創造更多的項目,並因此終止循環(終止循環後,也有dispQ更多的就業機會)Python線程從隊列中獲取項目 - 你如何確定線程沒有調用task_done()?
我需要做的是這樣的:
如果dispQ.qsize()== 0並沒有被項目工人FUNC內的工作,然後跳出while循環
即task_done()處理不當( )被稱爲
這將是很好,如果它有dispQ.join()與超時
是的,我認爲這會奏效。謝謝 – ealeon