我在使用python多处理库时遇到了一个奇怪的问题。
我的代码如下所示:我为每个“符号,日期”元组生成一个进程。我将结果合并。
我希望当一个进程完成对“符号,日期”元组的计算时,它应该释放它的内存吗?显然不是这样。我看到有数十个进程(尽管我将进程池设置为7号)被挂起¹。它们不占用CPU,也不释放内存。
完成计算后,如何让进程释放其内存?
谢谢!
¹“暂停”是指它们在ps命令中的状态显示为“S +”
def do_one_symbol( symbol, all_date_strings ):
pool = Pool(processes=7)
results = [];
for date in all_date_strings:
res = pool.apply_async(work, [symbol, date])
results.append(res);
gg = mm = ss = 0;
for res in results:
g, m, s = res.get()
gg += g;
mm += m;
ss += s;
最佳答案
您是否尝试通过使用 pool.close
关闭池,然后等待 pool.join
完成进程,因为如果父进程继续运行并且不等待子进程,则它们将变为zombies