python多处理:为什么在终止后进程失效?

我有一些python多处理代码,父进程启动一堆子工作进程,然后在一段时间后终止它们:

from multiprocessing import Process

nWorkers = 10
curWorkers = []
for iw in range(nWorkers):
    pq = Process(target=worker, args=(worker's_args_here))
    pq.start()
    curWorkers.append(pq)

# Do work here...

for pw in curWorkers:
    pw.terminate()

但是,子进程在终止后很长时间都显示为已停止运行.他们是僵尸进程吗?更重要的是,我应该如何终止它们以便它们真正消失?

解决方法:

尝试添加:

for pw in curWorkers:
    pw.join()

在末尾. .terminate()只会杀死进程.在子进程完全消失之前,父进程仍然需要收获它(至少在Linux-y系统上).

上一篇:外传1.异常处理深度解析


下一篇:java – 运行多个线程的JVM如何处理ctrl-c,w /和w / o shutdown hooks?