Python Multiprocessing重新生成崩溃的进程

时间:2011-01-28 21:58:47

标签: python exception multiprocessing

我想创建一些工作进程,如果它们因异常而崩溃,我希望它们能够重生。除了多处理模块中的is_alive方法之外,我似乎无法找到实现此目的的方法。

这将要求我遍历所有正在运行的进程(在休眠之后)并检查它们是否还活着。这本质上是一个繁忙的循环,我想知道是否有更好的解决方案,如果我的任何一个工作进程崩溃,将唤醒我的程序。一旦它醒来,我想记录崩溃我的程序并启动另一个进程的异常。

3 个答案:

答案 0 :(得分:2)

轮询以查看子进程是否存活应该可以正常工作,因为这是一个低开销检查,您不需要经常检查。

这个(类似)问题的第一个答案有一个Python代码示例:Multi-server monitor/auto restarter in python

答案 1 :(得分:1)

您可以将您的工作进程包装在try / except块中,其中除了在引发之前将消息推送到管道上。当然,民意调查并不比这更糟糕,而且更简单。

答案 2 :(得分:1)

如果你使用类似unix的系统,可以通过安装signal handler通知你的主程序死亡的孩子。在signal()上查找操作系统的文档,尤其是SIGCHLD。我担心我不记得Windows是否以非常有限的POSIX信号支持覆盖了SIGCHLD。