【发布时间】:2015-05-10 10:15:20
【问题描述】:
为什么当我创建一个进程并且我有 n 处于僵尸状态 python 的孩子加入他们?
In [1]: def quick_process():
...: pass
...:
In [2]: import multiprocessing
In [3]: import time
In [4]: for i in range(5):
...: multiprocessing.Process(target=quick_process).start()
...: time.sleep(1)
...:
In [5]: import os
In [6]: while True:
...: try:
...: pid, status = os.waitpid(-1, 0)
...: print(pid, status)
...: except ChildProcessError:
...: break
...:
5767 0
time.sleep(1) 语句用于确保当我再次循环时进程处于僵尸状态,仅此而已。如您所见,while 执行时只剩下一个孩子。在这个例子中n = 1,但它也会出现更大的值。为什么python会这样做?我不应该明确加入这些流程吗?谁能告诉我这里发生了什么?谢谢
【问题讨论】:
-
为什么不应该多处理等待孩子?这是一个高级界面,用户不应该被低级的东西所困扰。
-
我认为你的进程根本不是僵尸;相反。为了让他们成为僵尸,请将
pass替换为while True: pass。 -
因为当我加入这些孩子时,我需要对他们做一些事情,并且通过启动新流程,我不会注意到他们何时完成
-
一个进程在它完成并且它的父进程没有加入他时成为僵尸,所以那些进程是僵尸
标签: python python-multiprocessing