有没有办法限制ProcessPoolExecutor中每个子进程的任务 concurrent.futures模块?
(比如在multiprocessing.Pool中)
https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.multiprocessing.Pool
(参见maxtasksperchild arg)
答案 0 :(得分:2)
简短的回答是否定的。没有机制可以跟踪concurrent.futures.ProcessPoolExecutor
中工作人员执行的任务数量。因此,如果不修改python的内部代码,就无法做到。
解决方案可能是在loky中实现此功能。这是一个用于改进concurrent.futures.ProcessPoolExecutor
并修复其中一些错误的库。它为工作程序超时提供了一种机制,并且可以很容易地实现一个任务计数器" timeout"到达maxtasks
时如果你需要这个功能,我建议在loky repo上提出一个问题。
答案 1 :(得分:0)
Pebble支持。
from pebble import ProcessPool
def function(foo, bar=0):
return foo + bar
with ProcessPool(max_workers=5, max_tasks=10) as pool:
for i in range(0, 100):
future = pool.schedule(function, args=[i])
future.result()