未完成任务的Python队列计数

时间:2016-04-15 23:49:17

标签: python multithreading queue

我正在使用Queue实现Python Thread。我需要一种方法来获取当前队列中的项目总数(我可以通过queue.qsize()获得)和未完成任务的数量。基本上我需要计算正在处理/需要处理的所有项目。 Python Queue documentation提及以下内容:

  

每当项目添加到队列时,未完成任务的数量就会增加。每当消费者线程调用task_done()以指示该项目已被检索并且其上的所有工作都已完成时,计数就会下降。当未完成任务的数量降至零时,join()取消阻塞。

但它没有提供有关如何访问该计数的见解。提前谢谢!

1 个答案:

答案 0 :(得分:7)

我很惊讶它没有在文档中提及但Queue个对象具有unfinished_tasks属性:

>>> x = queue.Queue()
>>> x.unfinished_tasks
0
>>> x.put("test")
>>> x.unfinished_tasks
1

由于文档中没有提及它,因此不能保证作为公共接口的一部分,并且可能不是线程安全的。