아래의 경우 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()
이 호출 된 후에 만 프로세스가 해당 함수에서 작동하기 시작합니까?