2017-02-13 1 views

답변

2

짧은 대답은 아니오이다. concurrent.futures.ProcessPoolExecutor에는 작업자가 수행하는 작업 수를 추적하는 메커니즘이 없습니다. 따라서 파이썬의 내부 코드를 수정하지 않고는 할 수 없습니다.

솔루션은 loky에이 기능을 구현할 수 있습니다. 이것은 concurrent.futures.ProcessPoolExecutor을 개선하고 버그를 수정하는 라이브러리입니다. 작업자 시간 초과에 대한 메커니즘을 제공하며 maxtasks에 도달하면 "시간 초과"작업 카운터를 구현하기가 쉽습니다. 이 기능이 필요한 경우 불량 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()