Python的多进程库中如何获取队列的长度?

18

我有一个 multiprocessing.Manager 对象,它包含一个 multiprocessing.Queue 以管理我想让一组进程完成的所有工作。我想知道队列中剩余元素的数量,想知道如何做到这一点?

Python内置的 len() 函数不起作用。


1个回答

29
如果你要谈论的队列是 multiprocessing.Queue,请尝试使用 qsize() 方法来处理 multiprocessing.Queue 对象,但是需要注意:

qsize()

返回队列的大约大小。由于多线程/多进程语义,这个数字不可靠。

请注意,在类似Mac OS X这样的Unix平台上,此操作可能会引发NotImplementedError。


14
NotImplementedError 的解决方案是什么? - CodeGuru
2
解决 NotImplementedError 的一种方法是定义自己的队列类,并允许使用 .qsize() 方法。以下是 Python3 中的一个可行示例:https://gist.github.com/FanchenBao/d8577599c46eab1238a81857bb7277c9 - Fanchen Bao

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