0
나는 파이썬 다중 처리에 내 손을 노력하고 있어요. 나는 서로 독립적 인 두 개의 프로세스를 병렬로 실행하고 프로세스가 성공했는지 또는 ApplyAsync.successful() 유틸리티를 사용하지 않았는지 확인을 반환합니다. 그러나 내 서브 프로세스에 대한 콜백에서 성공적으로 호출하면 스크립트가 중단됩니다.파이썬 AsyncResult.successful() 반환하지 않습니다
import multiprocessing as mp
import time
result_map = {}
def foo_pool(x):
time.sleep(2)
print x
return x
result_list = []
def log_result(result):
print result_map[result].successful() #hangs
result_list.append(result)
def apply_async_with_callback():
pool = mp.Pool()
for i in range(10):
result_map[i] = pool.apply_async(foo_pool, args = (i,), callback = log_result)
pool.close()
pool.join()
print(result_list)
if __name__ == '__main__':
apply_async_with_callback()
좋아 - 다음
는 관련 코드 (
AsyncResult
multiprocessing/pool.py
)입니다. 고맙습니다. 나는 또 다른 비슷한 문제에 직면하고있다. 만약 서브 프로세스를 100 초 동안 잠자기 상태로 놓고 sudo kill -9를 사용하여 서브 프로세스를 죽이면 하위 프로세스는 결코 돌아 오지 않는다. 자원 고갈 또는 다른 문제로 인해 "죽는 하위 프로세스"이벤트를 등록하고 싶습니다. – ishu@ishu, 분리 된 질문으로 게시하는 것은 어떻습니까? – falsetru