2012-01-16 30 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()后表示,工人应终止,然后等待他们这样做。