2012-01-16 3 views
5

저는 실행하는데 약 10 분이 걸리는 파이썬 프로그램을 가지고 있습니다. 그래서 나는 일을 속도를 multiprocessing에서 Pool을 사용 : 그것은 단지에서, 더 빨리 실행퍼시 스턴트 프로세스 파이썬 풀 후

from multiprocessing import Pool 
p = Pool(processes = 6) # I have an 8 thread processor 
results = p.map(function, argument_list) # distributes work over 6 processes! 

. 신의 축복이 파이썬! 그래서 그렇게 될 것이라고 생각했습니다.

그러나 나는 이것을 할 때마다 p이 범위를 벗어 났을 때도 프로세스와 상당히 큰 크기의 상태가 유지된다는 것을 알고있었습니다. 사실, 나는 메모리 누출을 만들었다. 프로세스는 내 시스템 모니터 응용 프로그램에서 파이썬 프로세스로 표시됩니다.이 프로세스는 CPU를 사용하지 않지만 상태를 유지하기 위해 상당한 메모리를 사용합니다.

풀은 close,및 join이며,이 중 하나가 프로세스를 중지한다고 가정합니다. 누구든지 내 풀 p 내가 끝냈다 고 말할 수있는 가장 좋은 방법은 알고 있습니까?

도움을 주셔서 감사합니다.

p.close() 
p.join() 

map() 후 노동자 종료하고 그렇게 할 때까지 기다립니다해야 함을 표시하기 : 당신이해야 할 같은 Python docs에서

답변