我在使用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

09-10 02:42
查看更多