2012-01-16 64 views
5

我有一個Python程序,需要大約10分鐘才能執行。所以我用Poolmultiprocessing加快速度:持久進程發佈Python池

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! 

它運行得更快,只是從。上帝保佑Python!所以我認爲這就是它。

但是我注意到,每次我這樣做時,即使p超出範圍,進程及其相當大的狀態仍然存在;有效地,我創建了一個內存泄漏。這些進程在我的系統監視器應用程序中顯示爲Python進程,此時不使用CPU,但有相當大的內存來維持其狀態。

池具有功能close,terminatejoin,我假設其中的一個會殺死進程。有誰知道哪個是最好的方式告訴我的游泳池p我完成了它?

非常感謝您的幫助!

回答

5

Python docs,它看起來像你需要做的:

p.close() 
p.join() 

map()後表示,工人應終止,然後等待他們這樣做。