Python Queue get()/ task_done()问题

时间:2009-10-20 08:54:44

标签: python multithreading queue

队列的消费者方面:

m = queue.get()
queue.task_done()

<rest of the program>

问题:

  1. task_done()是否有效地从队列中弹出m并释放消费者对队列的锁定?

  2. 我需要在程序的其余部分使用m。它是安全的,还是我需要在task_done()之前拨打mtask_done()之前复制它?

  3. 快乐

1 个答案:

答案 0 :(得分:57)

不,queue.get()将该项目从队列中弹出。在你这样做之后,你可以随心所欲地做任何你想做的事情,只要制作人能够像它应该的那样工作并且不再触摸它。调用queue.task_done()只是为了通知队列你已完成某些事情(它甚至不知道特定项目,它只计算队列中未完成的项目),以便queue.join()知道工作完了。