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

14

我一直在谷歌上搜索答案,但似乎没有人知道。有人能告诉我subprocess模块是否并行调用吗?Python文档表明它可以用于生成新进程,但没有提到它们是否是并行的。如果可以并行处理,你能否给我展示一个示例或链接?

1个回答

24

这取决于你如何使用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()

1
好的,我正在使用 subprocess.check_output("some-command"),是否可以直接从 check_output 切换到 Popen - iNoob
@iNoob,这里我们可以看到为什么具体问题是好的演示! :) 你应该更新你的问题来说明这一点。 - wnnmaw
@wnnmaw 抱歉,我有点糊涂了,你说的更新是什么意思?我很乐意帮忙,但能否详细说明一下? - iNoob
@wnnmaw 哈哈,我是在问你想让我更新成什么样子。顺便说一下,这里是星期四 ^_^,为什么我在笑呢,这可不好 :( - iNoob
抱歉,您得原谅我有点特别,不是“谢尔顿”那种特别,而是“格鲁戈·克鲁德”那种特别。 - iNoob
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接