python中的多处理不会释放内存



我正在运行一个多处理代码。代码的框架如下所示:

def func_a(x):
#main function here
return result
def func_b(y):
cores = multiprocessing.cpu_count() - 1
pool = multiprocessing.Pool(processes=cores)
results = pool.map(func_a, np.arange(1000)
return results
if __name__ == '__main__':
final_resu = []
for i in range(0, 200):
final_resu.append(func_b(i))

我在这段代码中发现的问题有两个:首先,在循环过程中内存继续增加。其次,在任务管理器(windows10(中,python的执行次数逐步增加,即从14到25,从36到47…每次迭代都在主循环中完成。

我相信多处理有问题,但我不知道该怎么处理。看起来func_b中的多处理在主循环完成一个循环时没有被删除?

正如文档中的示例所示,当您完成Pool时,您应该通过pool.close()pool.join()显式关闭它。也就是说,如果您只创建一次Pool会更好,例如,将Pool作为参数传递给func_b()。并且在__name__ == '__main__'块中只创建并关闭它一次。

相关内容

  • 没有找到相关文章

最新更新