如何从Python程序中启动多个Python脚本?
我想从我的程序中启动多个Python脚本(我的程序也是用Python写的)。
我的问题是,我想给每个脚本分配一个终端,因为我会用pexpect
来收集它们的输出。
我试过使用pexpect
、os.execlp
和os.forkpty
,但都没有达到我想要的效果。
我想启动这些子进程,然后就不再管它们了(它们会处理一些数据,把输出写到终端,我可以用pexpect
读取这些输出,然后退出)。
有没有什么库或者最佳实践可以做到这一点呢?
顺便说一下,在你问我为什么要写入STDOUT并从中读取之前,我想说的是,我并不是写入STDOUT,而是读取tshark
的输出。
4 个回答
0
我不明白为什么你需要用 expect 来处理这个。tshark
应该是把输出发送到标准输出(stdout),只有在一些奇怪的情况下,它才会把输出发送到错误输出(stderr)。
所以,你想要的应该是:
import subprocess
fp= subprocess.Popen( ("/usr/bin/tshark", "option1", "option2"), stdout=subprocess.PIPE).stdout
# now, whenever you are ready, read stuff from fp
1
从Python 3.5开始,你可以这样做:
import subprocess
result = subprocess.run(['python', 'my_script.py', '--arg1', val1])
if result.returncode != 0:
print('script returned error')
这样做还会自动把标准输出和错误输出重定向。
5
可以查看一下 subprocess模块
subprocess模块让你可以创建新的进程,连接到它们的输入、输出和错误信息,并获取它们的返回代码。这个模块的目的是替代一些旧的模块和函数,比如:
os.system
os.spawn*
os.popen*
popen2.*
commands.*