我正在使用一个流程池。这个逻辑似乎一直在运作,直到最近。
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
}。
已解散的进程是僵尸,对吧?这意味着他们已经死了但没有收获,对吗?
答案 0 :(得分:0)
虽然我不完全理解它,但问题是我正在从我的一个子进程调用sys.exit()。这不是退出子进程的正确方法,而应该调用os._exit():stackoverflow.com/questions/19747371
sys.exit()在退出之前先做了一堆清理:可能是因为尝试执行一些清理工作而陷入困境,并且父进程正在等待加入它。
随意提供其他说明,我可以编辑此答案。