在python中,使用twisted loopingcall,multiprocessing.Process和multiprocessing.Queue;是否可以创建一个僵尸进程。如果是这样,那怎么样?
答案 0 :(得分:6)
zombie是一个已经完成的过程,但是启动它的过程尚未注意到它的完成。这是扭曲过程的责任,收获子女。
如果您使用spawnProcess
开始此过程,则所有内容应始终按预期工作。然而,正如bug #733 in Twisted(已经修复了很久)所描述的那样,当你想将Twisted与其他产生进程的函数一起使用时,会出现大量令人讨厌的边缘情况,因为Python的API在历史上很难在信号处理程序。
这在最新版本的代码中都已修复,但我相信在以下情况下您可能仍会遇到此错误:
python setup.py build_ext -i
修复此问题。)popen
或subprocess
。希望升级Twisted或运行相应的命令将解决您的问题,但您仍应考虑使用spawnProcess
,因为这样可以将进程输出视为reactor事件循环中的正常事件。