独立使用Popen运行python子进程

时间:2017-04-17 18:26:05

标签: python linux

我想使用python Popen独立运行一个python脚本作为UNIX shell命令。

Script1.py:此脚本将采用多个参数。 Script2.py:此脚本将解析某些条件,并准备调用Script1.py所需的必要参数

假设Script2.py解析了一些条件并准备了运行Script1.py的命令 命令python Script1.py arg1 arg2 arg3

目前正在运行脚本:

proc=subprocess.Popen(Command,shell=True,stdout=None, stderr=None)

但是,当我手动杀死Script2.py(使用CTRL + C)时,我可以看到Script1.py也被杀死/终止。

如何独立运行Script1.py而不必担心Script2.py的状态?

1 个答案:

答案 0 :(得分:0)

将进程与window$上的父进程分离的方法是:

from subprocess import Popen

CREATE_NEW_PROCESS_GROUP = 0x00000200
DETACHED_PROCESS = 0x00000008
Popen(['python', 'drive:/path/to/loop_test.py', 'some_arg', 'another_arg'],
                 stdin=None, stdout=None, stderr=None, shell=True,
                 creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP
                 )

linux上,你应该可以使用nohuppreexec_fn=os.setpgrp来实现同样的目标,即:

Popen(['nohup', 'python', '/path/to/loop_test.py', 'some_arg','another_arg'],
shell=True, stdout=None, stderr=None, preexec_fn=os.setpgrp )