队列的消费者方面:
m = queue.get()
queue.task_done()
<rest of the program>
问题:
task_done()
是否有效地从队列中弹出m
并释放消费者对队列的锁定?
我需要在程序的其余部分使用m
。它是安全的,还是我需要在task_done()
之前拨打m
或task_done()
之前复制它?
快乐
答案 0 :(得分:57)
不,queue.get()
将该项目从队列中弹出。在你这样做之后,你可以随心所欲地做任何你想做的事情,只要制作人能够像它应该的那样工作并且不再触摸它。调用queue.task_done()
只是为了通知队列你已完成某些事情(它甚至不知道特定项目,它只计算队列中未完成的项目),以便queue.join()
知道工作完了。