执行Python脚本而不使用子进程生成新进程

时间:2015-09-17 10:45:28

标签: python subprocess startup

我正在制作一个python脚本(start.py)来运行多个(4)python脚本。 我的代码:

    import subprocess
from time import sleep

y=(0.2)
sleep (y)
subprocess.Popen(["python", 'a1.py'])
sleep (y)
subprocess.Popen(["python", 'a2.py'])
sleep (y)
subprocess.Popen(["python", 'a3.py'])
sleep (y)
subprocess.Popen(["python", 'a4.py'])

当我运行start.py时,四个脚本按预期在后台运行,但每个脚本都有一个进程ID。 是否可以为所有人设置一个PID?

如何在启动时将start.py作为服务运行? (我使用树莓派)。

2 个答案:

答案 0 :(得分:3)

要在同一个解释器中内联运行Python脚本,您可以使用execfile

https://docs.python.org/2/library/functions.html#execfile

Python 3等价物:

What is an alternative to execfile in Python 3?

要将脚本作为后台服务启动,最好使用Linux systemdsupervisord之类的外部工具来实现此目的。

答案 1 :(得分:-2)

你可以试试这段代码:

import subprocess
from time import sleep
import sys
y=(0.2)
sleep(y)
subprocess.Popen([sys.executable, 'a1.py'],stdin=subprocess.PIPE)
sleep(y)
subprocess.Popen([sys.executable, 'a2.py'],stdin=subprocess.PIPE)
sleep(y)
subprocess.Popen([sys.executable, 'a3.py'],stdin=subprocess.PIPE)
sleep(y)
subprocess.Popen([sys.executable, 'a4.py'],stdin=subprocess.PIPE)

我建议如果所有想法都好,那么逐个执行脚本然后你可以执行上面的程序