使用Popen独立运行python子流程
我想使用python使用Popen独立运行python子流程,python,linux,Python,Linux,我想使用pythonPopen作为unixshell命令独立运行一个python脚本 Script1.py:此脚本将采用多个参数。 Script2.py:此脚本将解析某些条件,并准备调用Script1.py所需的必要参数 假设Script2.py解析了一些条件并准备了一个命令来运行Script1.py 命令:python脚本1.py arg1 arg2 arg3 当前正在以以下方式运行脚本: proc=subprocess.Popen(Command,shell=True,stdout=None
Popen
作为unixshell命令独立运行一个python脚本
Script1.py
:此脚本将采用多个参数。
Script2.py
:此脚本将解析某些条件,并准备调用Script1.py所需的必要参数
假设Script2.py
解析了一些条件并准备了一个命令来运行Script1.py
命令:python脚本1.py arg1 arg2 arg3
当前正在以以下方式运行脚本:
proc=subprocess.Popen(Command,shell=True,stdout=None, stderr=None)
但是,当我手动杀死Script2.py
时(使用CTRL+C),我可以看到Script1.py也被杀死/终止
如何独立运行Script1.py
而不必担心Script2.py
的状态?在窗口$
上将进程与其父进程分离的方法是:
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
上,您应该能够使用nohup
和preexec_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 )
谢谢……成功了!。你能告诉我“preexec_fn=os.setpgrp”会做什么吗?