Python队列未完成任务数量

12
我正在使用Python QueueThread实现,需要一种获取队列中当前项目总数的方式(可以使用queue.qsize()和未完成任务的计数方式。基本上,我需要所有正在处理/需要处理的项目数量的计数。 Python Queue documentation提到:

每当向队列添加项时,未完成任务的计数会增加。 每当消费者线程调用task_done()以指示已检索该项并且对其进行的所有工作均已完成时,计数会减少。 当未完成任务的计数下降到零时,join() 就会解除阻塞。

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


1
这个链接是一个选择,但我感觉队列里一定有内置的东西。 - Mocking
1个回答

17

我很惊讶文档中没有提到,但是Queue对象有一个unfinished_tasks属性:

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

因为文档中没有提到,所以更新到新版本时不能保证相同属性(尽管我有些怀疑),特别是我不会相信这是线程安全的(因为任何内部使用都已经在锁获取之内,所以外部访问可能不安全)


1
您先生或女士,您是最棒的。 - Mocking
2
{btsdaf} - Alvaro Gutierrez Perez
2
{btsdaf} - Tadhg McDonald-Jensen
3
文档中是否涵盖某些内容并不代表它们是API的一部分。文档有时会出错。Python明确说明以'_'或'__'开头的变量是私有变量,因此其他任何变量都应视为API的公共部分。 - Jamie Marshall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接