运行辅助 python 脚本时:
- 是否可以运行
subprocess.Popen
, or subprocess.call
甚至execfile
在新航站楼? (就像在与运行脚本的当前终端不同的终端中)。
- 或者,如果在运行我的程序(主程序)之前,我首先打开两个终端,然后我可以将辅助脚本指向第二个终端吗? (因此以某种方式获取打开终端的 ID,然后使用其中的特定终端来执行子进程)。
一个例子,要运行两个子进程,first.py
应该首先调用,然后才调用第二个,second.py
。因为这两个脚本first.py
and second.py
是相互依赖的(如first.py
进入等待模式,直到second.py
运行,然后first.py
恢复,我不知道如何在子进程方面使它们之间的通信有效。)
import subprocess
command = ["python", "first.py"]
command2 = ["python", "second.py"]
n = 5
for i in range(n):
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
p2 = subprocess.Popen(command2, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while True:
output = p.stdout.readline().strip()
print output
if output == 'stop':
print 'success'
p.terminate()
p2.terminate()
break
框架(Ubuntu、Python 2.7)
我猜你想要类似的东西
subprocess.call(['xterm','-e','python',script])
老好xterm
几乎没有多余的装饰;在 Freedesktop 系统上,也许可以运行xdg-terminal
反而。在 Debian 上,尝试x-terminal-emulator.
然而,在大多数情况下,让您的程序需要 X11 是一个错误。更好的解决方案是运行子进程并将输出输出到日志文件(或套接字或其他任何文件),然后单独运行tail -f
在这些文件上(在不同的终端中,或从不同的服务器上ssh
,或输出到支持的记录器rsyslog
,或或或...),这使您的程序保持简单和模块化,不受“方便”依赖性的影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)