我正在尝试编写一个允许用户启动长时间运行计算过程的应用程序(例如,几个小时)。为此,我使用Python Popen()
函数。只要主Pylons进程工作正常,一切都很好,但是当我重新启动Pylons进程时,如果从上一个paster启动中留下任何僵尸进程,它就不会响应任何请求。
这个问题的起源或解决方法是什么?
先谢谢你,伊万。
答案 0 :(得分:1)
为了避免僵尸进程,孩子必须做一个双叉来从控制过程中分离出来。见http://en.wikipedia.org/wiki/Zombie_process
所以你需要做的就是让你的孩子再次进行分叉 - 同时小心保持相关文件句柄处于打开状态,这样你仍然可以进行交流。
答案 1 :(得分:-1)
您需要某种消息传递。这可以通过安装信号处理程序来完成。 Python有signal
模块,Popen
有send_signal
方法。
也许http://www.doughellmann.com/PyMOTW/subprocess/#signaling-between-processes也会帮助你。