子进程调用是否并行完成?

iNo*_*oob 10 python parallel-processing

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

che*_*ner 17

这取决于你如何使用subprocess:

subprocess.call("some-program")
Run Code Online (Sandbox Code Playgroud)

将阻止直到some-program完成.

p = subprocess.Popen("some-program")
Run Code Online (Sandbox Code Playgroud)

some-program在与脚本的其余部分并行的单独进程中运行.

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

subprocess.Popen("some-program").wait()    
Run Code Online (Sandbox Code Playgroud)

output = subprocess.check_output("some-program") 基本上是一样的

output, stderr = subprocess.Popen("some-program").communicate()
Run Code Online (Sandbox Code Playgroud)