我想要一个脚本创建2个simultaniuosly运行while循环。为了实现这一点,我试图打开另一个脚本(让多个脚本同时运行,而不是将所有代码都放在一个脚本中)。 主要脚本:
#!/bin/env python
import sys
import subprocess
print sys.path
process = subprocess.Popen('/home/pi/test2.py', shell=True, stdout=subprocess.PIPE)
第二个脚本:
#!/bin/env python
import sys
i=1
print sys.path
while i<50:
print i
i=i+1
主脚本终止没有错误,但看起来第二个甚至没有启动。为什么呢?
答案 0 :(得分:1)
如果您想查看test2.py
的输出,那么您不应该指定stdout=subprocess.PIPE
。收集标准并允许您通过process
对象访问它。
另外,对于它的价值,shell=True
不是一个好主意,除非您确定需要它。
它看起来像这样
subprocess.Popen(['/home/pi/test2.py'])
答案 1 :(得分:0)
添加到sigmavirus24s的答案。如果您未设置shell=True
,则必须将参数作为此['/home/pi/test2.py']
列表传递,并将其作为第一个参数传递。对于许多参数,使用shlex
模块split
函数将string
拆分为适合您的参数列表。
编辑:要使脚本生效,您需要传递['python', '/home/pi/test2.py']
作为参数。这告诉python
运行脚本。