我怎么知道子进程什么时候死了?
在我的程序里,我同时运行了4个进程。
from multiprocessing import Process
procs = (
Process(target=ClassOne, name='ClassOne'),
Process(target=ClassTwo, name='ClassTwo'),
Process(target=ClassThree, name='ClassThree'),
Process(target=ClassFour, name='ClassFour'),
)
for p in procs:
p.daemon = False
p.start()
我希望能在其中一个子进程结束时收到通知,这样我就可以把其他进程和我自己也结束掉。
5 个回答
1
你可以看看在这个类似问题中提到的AutoJoiningProcess类。
如果你愿意在你的代码中添加对gobject的依赖(这是PyGTK的一部分),那么AutoJoiningProcess可以让你监听一个信号,这个信号会在一个进程完成时发出。收到这个信号后,你就可以根据自己的需要做出反应。
3
可以使用 os.waitpid()
,第一个参数传 -1,第二个参数传 0。
- 第一个参数的意思是你想要等待当前进程的任何一个子进程。
- 第二个参数的意思是它的行为和
wait()
一样。
这个函数会返回一个元组,里面包含了已经结束的子进程的进程ID和它的退出代码。
3
只需要为SIGCHLD定义一个信号处理器,然后检查刚刚结束的子进程返回的框架,以获取你需要的信息……如果有必要,也可以让父进程退出哦 :)