为什么我没有收获僵尸进程? (CentOS Linux,python)

时间:2015-10-23 13:00:56

标签: python multiprocessing

我正在使用一个流程池。这个逻辑似乎一直在运作,直到最近。

pool = multiprocessing.Pool(processes = 2*multiprocessing.cpu_count())
for p in processArgs:
    pool.apply_async(myFunc, p)

pool.close()
pool.join()

现在看来,当这个运行时,我最终将所有子进程都处于一个已经不存在的状态,并且父进程似乎还没有执行pool.join()(基于a)这个事实关于下一个发生的逻辑似乎没有执行的事实,已经失效的进程仍在那里b}。

已解散的进程是僵尸,对吧?这意味着他们已经死了但没有收获,对吗?

1 个答案:

答案 0 :(得分:0)

虽然我不完全理解它,但问题是我正在从我的一个子进程调用sys.exit()。这不是退出子进程的正确方法,而应该调用os._exit():stackoverflow.com/questions/19747371

sys.exit()在退出之前先做了一堆清理:可能是因为尝试执行一些清理工作而陷入困境,并且父进程正在等待加入它。

随意提供其他说明,我可以编辑此答案。