【发布时间】:2014-01-10 05:21:32
【问题描述】:
我不完全确定为什么,但我本质上想运行 2 个进程,所以我使用子进程 Popen 函数。
commands = ['command 1', 'command 2']
for command in commands:
proc = Popen(command.split(' '))
proc.communicate() # line of interest
这些命令是渲染过程,因此当它们完成时,它们会在目录中创建一个图像。但奇怪的是,当我使用communicate() 运行它们时,基本上是串联的,它们在预期的时间内完成(大致时间1 + 时间2)。
但是,当我在没有通信()的情况下运行它们时,应该有效地并行运行它们,它们需要更长的时间才能完成。有谁知道为什么会发生这种行为以及如何补救?
【问题讨论】:
-
只有 2 个命令还是您实际上有更多命令?当你运行它时,你的系统资源是什么样的——例如您确定您没有使用内存或其他东西进行交换吗?
-
是的,实际上只有 2 个(渲染作业,高度并行)。它没有最大化 CPU,也没有使用任何交换空间。资源似乎绰绰有余
标签: python subprocess multiprocessing