【发布时间】:2017-01-31 07:58:16
【问题描述】:
我有一个 multiprocessing.Manager 对象,其中包含一个 multiprocessing.Queue 来管理我希望一组进程执行的所有工作。我想获取此队列中剩余的元素数量,并且想知道如何执行此操作?
Python 内置的len() 函数不起作用。
【问题讨论】:
标签: python python-3.x python-2.7 python-multiprocessing
我有一个 multiprocessing.Manager 对象,其中包含一个 multiprocessing.Queue 来管理我希望一组进程执行的所有工作。我想获取此队列中剩余的元素数量,并且想知道如何执行此操作?
Python 内置的len() 函数不起作用。
【问题讨论】:
标签: python python-3.x python-2.7 python-multiprocessing
如果你说的队列是multiprocessing.Queue,尝试对multiprocessing.Queue对象使用qsize()方法,但要小心:
qsize()
返回队列的大致大小。因为 多线程/多处理语义,这个数字是不可靠的。
请注意,这可能会在 Unix 平台上引发 NotImplementedError,例如 未实现 sem_getvalue() 的 Mac OS X。
【讨论】:
NotImplementedError 的一种方法是定义允许.qsize() 方法的自定义队列类。这是 Python3 中的一个工作示例:gist.github.com/FanchenBao/d8577599c46eab1238a81857bb7277c9