Python获取多处理池的活动进程号

时间:2017-10-01 16:10:09

标签: python multiprocessing pool

我创建了一个包含多处理池的进程池。我有很多任务要处理,但要获得任务的qps并不容易。所以我想获取池的活动进程号,以便我可以设置适当的池大小。这是整个代码:

npm start

1 个答案:

答案 0 :(得分:0)

apply_async为您提供AsyncResult: https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.AsyncResult

您可以使用.ready()来查看是否已完成。通过这种方式,您可以完成任务,并通过扩展完成剩余的任务。 只要此数量超过了池大小,您就可以假设池化了许多进程正在运行,如果没有,那么剩余的任务量将是正在运行的进程数量。

备选方案:

如果您不使用apply_async而是使用Queue,例如: https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue

然后,您可以使用.qsize()

获取大致的队列大小

还有multiprocessing.active_children,但只有当这些进程结束时才有效,但是池没有;除非你订购.join() 所以在你的情况下它会起作用。

相关问题