我有一个python脚本,我试图在同一时间调用它们。 我把它写成:
os.system('externalize {0}'.format(result))
os.system('viewer {0} -b {1}'.format(img_list[0], img_list[1]))
然而,通过这样做,第二个应用程序将只会打开/显示,除非我退出/退出第一个应用程序。
我尝试使用subprocess
,如下所示:
subprocess.call('externalize {0}'.format(result), shell=True)
subprocess.call('viewer {0} -b {1}'.format(img_list[0], img_list[1]))
但我没有取得多大成功。我在某处做错了吗?
答案 0 :(得分:1)
subprocess
等几个call
函数只是Popen
对象的便捷包装器,它以异步方式执行程序。你可以改用
将subprocess导入为subp
result =' foo' img_list = [' bar',' baz']
proc1 = subp.Popen('externalize {0}'.format(result), shell=True)
proc2 = subp.Popen('viewer {0} -b {1}'.format(img_list[0], img_list[1]), shell=True)
proc1.wait()
proc2.wait()
答案 1 :(得分:1)
Run them as subprocesses without waiting for finish:
p1=subprocess.Popen(<args1>)
p2=subprocess.Popen(<args2>)
如果/当您需要等待完成和/或检查退出代码时,请在这些对象上致电wait()
(或whatever else applicable)。
(一般情况下,you should never ignore the object that Popen()
returns and its exit code if you need to do something as a result of the subprocess' work(例如,如果它们是临时的,请清理您提供的文件)。)