我怎么知道子进程什么时候死了?

7 投票
5 回答
5996 浏览
提问于 2025-04-16 03:54

在我的程序里,我同时运行了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定义一个信号处理器,然后检查刚刚结束的子进程返回的框架,以获取你需要的信息……如果有必要,也可以让父进程退出哦 :)

撰写回答