2017-02-13 4 views

答えて

2

短い答えはノーです。 concurrent.futures.ProcessPoolExecutorには、作業者によって実行されたタスクの数を追跡するメカニズムはありません。したがって、Pythonの内部コードを変更しなければ、それを行うことはできません。

解決策は、lokyにこの機能を実装することです。これは、concurrent.futures.ProcessPoolExecutorを改善し、いくつかのバグを修正するライブラリです。それは労働者タイムアウトのためのメカニズムを提供し、maxtasksに達すると "タイムアウト"するタスクカウンタを実装するのは簡単です。この機能が必要な場合は、loky repoに問題を置くことをおすすめします。

+0

nice lib。ありがとうございました – gosom

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() 
関連する問題