我创建了一个包含多处理池的进程池。我有很多任务要处理,但要获得任务的qps并不容易。所以我想获取池的活动进程号,以便我可以设置适当的池大小。这是整个代码:
npm start
答案 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()
所以在你的情况下它会起作用。