塔架和僵尸进程

时间:2011-09-21 18:03:11

标签: python pylons multiprocessing zombie-process

我正在尝试编写一个允许用户启动长时间运行计算过程的应用程序(例如,几个小时)。为此,我使用Python Popen()函数。只要主Pylons进程工作正常,一切都很好,但是当我重新启动Pylons进程时,如果从上一个paster启动中留下任何僵尸进程,它就不会响应任何请求。

这个问题的起源或解决方法是什么?

先谢谢你,伊万。

2 个答案:

答案 0 :(得分:1)

为了避免僵尸进程,孩子必须做一个双叉来从控制过程中分离出来。见http://en.wikipedia.org/wiki/Zombie_process

所以你需要做的就是让你的孩子再次进行分叉 - 同时小心保持相关文件句柄处于打开状态,这样你仍然可以进行交流。

答案 1 :(得分:-1)

您需要某种消息传递。这可以通过安装信号处理程序来完成。 Python有signal模块,Popensend_signal方法。

也许http://www.doughellmann.com/PyMOTW/subprocess/#signaling-between-processes也会帮助你。