0

아래의 경우 Pool.join().close()을 호출해야하는 경우는 언제입니까? 문서를 읽으면 프로세스가 끝나기를 기다리는 것처럼 보입니다. 나는 이런 식으로 뭔가를 할 경우 예를 들어, :다중 처리 Python 풀

while True: 
    pool = Pool(processes=4) 
    results = [] 
    for x in range(1000): 
     result = pool.apply_async(f, (x,)) 
     results.append(result) 

    for result in results: 
     result.get(timeout=1) 
    print "finished" 

나는 여전히 다른 프로세스가 join()close()으로 완료 될 때까지 기다릴 필요합니까? 내가 생각하기에, 모든 비동기 결과에 대해 반복 작업을하고 있고 완료하기 위해 대기 중 (차단 중)이므로 print finished에 도달 할 때까지 모든 프로세스가 이미 종료되었을 것입니다.

이 정보가 맞습니까?

또한 언제 프로세스가 함수 작업을 시작합니까? 나는 ps -elf과 병렬로 실행되는 4 개의 프로세스가 있음을 발견했습니다. 이 경우에 result.get()이 호출 된 후에 만 ​​프로세스가 해당 함수에서 작동하기 시작합니까?

답변

0

가까이()

풀에 제출되는 것을 더 이상 작업을 방지합니다. 모든 작업이 완료되면 작업자 프로세스가 종료됩니다.

모든 프로세스에 대한

대기가 제대로 즉시 프로세스가 기능에 작업을 시작할 것입니다, 그것을 pool.apply_async 전화로 Proper way to use multiprocessor.Pool in a nested loop

시작하는

좋은 링크를 종료()에 가입 결과 객체를 반환 할 것입니다.

관련 문제