未完成任务的Python队列计数

Moc*_*ing 4 python queue multithreading

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

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

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

Tad*_*sen 7

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

>>> x = queue.Queue()
>>> x.unfinished_tasks
0
>>> x.put("test")
>>> x.unfinished_tasks
1
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,但是......它可以被认为是Queue类的公共API的一部分还是实现细节? (2认同)
  • @AlvaroGutierrezPerez拍摄我想不在文档中会使它成为一个实现细节.嗯,这是令人失望的. (2认同)
  • 天气事物是否在文档中并不表示天气它们在 API 中的一部分。文档总是错误的。Python 明确 [sates](https://docs.python.org/3/tutorial/classes.html#tut-private) 以 '\_' 或 '__' 开头的变量是私有变量,所以应该考虑其他任何事情API 的公共部分。 (2认同)