【问题标题】:open independent process python打开独立进程python
【发布时间】:2015-12-20 22:44:09
【问题描述】:

我在使用 subprocess 模块通过 Python 打开完全独立的进程时遇到了问题。即使 python 程序死了,我也需要 python 脚本生成的进程继续存在。我注意到 subprocess 创建了一个子进程,而 nohup 并没有使其保持活动状态。它需要在 Windows 和 Linux 上都可以工作,所以我不确定 os.fork 是否可以工作。

我的目标是一个始终运行的主程序,它调用其他程序,如果主程序死了,我希望衍生的程序继续存在。

主程序

import subprocess
import time

subprocess.Popen(["/usr/bin/python", "/home/jchoinski/Desktop/Sentinel1.1/programTest.py"], stdin=subprocess.PIPE, stdout=PIPE, stderr=PIPE)
while True:
   time.sleep(1)

衍生程序

import time

l = 1
while l < 100000:
    l += 1
    print(l)
    time.sleep(1)

进程树如下所示:

主程序
|_调用程序

我希望它看起来像:

主程序
调用程序

有什么想法吗?我什至应该为此使用子流程吗?

【问题讨论】:

标签: python python-2.7 subprocess popen


【解决方案1】:

我找不到真正通用的方式来独立启动程序,因为它是自己的进程。我设法通过检查它是否是*nix 操作系统并在开头附加“nohup”(如果为真)来获得我想要的东西。 Windows 不会杀死子进程,所以它成功了。

【讨论】:

【解决方案2】:

改用Multiprocessing 库并将进程作为daemon 运行。

【讨论】:

猜你喜欢
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 2016-10-07
  • 2012-07-20
  • 2021-06-27
相关资源
最近更新 更多