如何同时运行两个外部脚本并在两者完成后收到通知

时间:2014-12-17 18:54:38

标签: python-2.7

我使用以下脚本运行外部脚本:

with open( 'blah.txt', 'w' ) as f:
    subprocess.call( [ 'exec1', 'param1' ], stdout=f, stderr=f )

问题>我需要同时运行两个脚本(即exec1和exec2),每个脚本都写入不同的文件。我也想知道两个脚本何时完成执行。在python中有一个很好的方法吗?

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

from subprocess import Popen

f1 = open( 'blah.txt', 'w' )
f2 = open( 'other_blah.txt', 'w' )
proc1 = Popen([ 'exec1', 'param1' ], stdout=f1, stderr=f1)
proc2 = Popen([ 'exec2', 'param2' ], stdout=f2, stderr=f2)

# If you don't need to be doing anything else, wait for both to finish
proc1.wait()
proc2.wait()

f1.close()
f2.close()

如果您正在处理wait() stdin或stdout,请注意subprocess.PIPE的常见警告 - 如果您最终不得不担心这一点,您可以考虑转到使用的循环poll()定期检查这两个流程。