Python池中的持久进程

5 投票
1 回答
863 浏览
提问于 2025-04-17 10:23

我有一个Python程序,执行大约需要10分钟。为了加快速度,我使用了来自multiprocessingPool

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,但却占用了大量内存来维持它们的状态。

Pool有closeterminatejoin这几个函数,我想其中一个应该可以结束这些进程。有没有人知道我该用哪个方法来告诉我的池p我已经用完它了?

非常感谢你的帮助!

1 个回答

5

根据Python文档,你需要这样做:

p.close()
p.join()

在使用map()之后,告诉工作进程应该结束,然后等待它们完成这个过程。

撰写回答