Python 다중 처리 풀 imap_unordered 호출의 진행 상황을 표시하시겠습니까?

| | | | | | | | | | | | | | |

imap_unordered() 호출로 다중 처리 풀 작업 세트를 성공적으로 수행하는 스크립트가 있습니다.

p = multiprocessing.Pool() rs = p.imap_unordered(do_work, xrange(num_tasks)) p.close() # 더 이상 작업하지 않음 p.join() # 완료를 기다립니다. 

하지만 내 num_tasks는 약 250,000이므로 join()은 10초 정도 주 스레드를 잠그고 주 프로세스를 표시하기 위해 명령줄에 점진적으로 반향할 수 있기를 바랍니다. 잠겨 있지 않습니다.

p = multiprocessing.Pool() rs = p.imap_unordered(do_work, xrange(num_tasks)) p.close() # 작업이 더 이상 진행되지 않는 동안 (True ): 나머지 = rs.tasks_remaining() # 아직 완료되지 않은 지도 호출이 얼마나 됩니까? if (remaining == 0): break # while 루프 밖으로 점프 

남은 작업 수를 나타내는 풀 자체 또는 결과 개체에 대한 메서드가 있습니까? multiprocessing.Value 개체를 카운터로 사용해 보았지만(do_work는 작업을 수행한 후 counter.value += 1 작업을 호출함) 카운터는 증가를 중지하기 전에 총 값의 ~85%에만 도달합니다.