持久进程发布Python池

时间:2012-01-16 19:26:49

标签: python pool

我有一个Python程序需要大约10分钟才能执行。因此,我使用Pool中的multiprocessing来加快速度:

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,但需要相当大的内存来维护其状态。

池有closeterminatejoin功能,我假设其中一个会终止进程。有谁知道哪个是告诉我的游泳池p最好的方法我已经完成了它?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:5)

Python docs开始,您需要执行以下操作:

p.close()
p.join()

map()之后表明工人应该终止然后等待他们这样做。