子进程调用,它们是并行完成的吗?

时间:2014-03-27 20:41:37

标签: python parallel-processing

我一直在谷歌搜索这个问题的答案,但似乎没有一个答案。任何人都可以告诉我subprocess模块是否并行执行其调用? Python文档建议它可以用来生成新进程,但它没有提到它们是否并行。如果它们可以并行完成,你可以给我一个例子或者链接我吗?

1 个答案:

答案 0 :(得分:15)

这取决于您使用subprocess

的方式
subprocess.call("some-program")

将阻止,直到some-program完成。

p = subprocess.Popen("some-program")

将在一个单独的进程中运行some-program,与脚本的其余部分并行运行。

请注意,第一个只是一个方便的包装器,相当于

subprocess.Popen("some-program").wait()    

output = subprocess.check_output("some-program")

基本相同
output, stderr = subprocess.Popen("some-program").communicate()