【发布时间】:2015-09-15 20:43:29
【问题描述】:
我正在尝试创建一个可变的批量大小,以进行子流程调用。我对启动一批 5 个的最佳方式有点困惑,等待所有 5 个完成而不是启动下一个 5 个。
到目前为止我所拥有的是:
batchSize = 5
proccessArray = process.split(",")
processLength = len(proccessArray) - 1
counter1 = 0
for i in range(0, processLength, batchSize):
for x in range(1, batchSize):
d = {}
if counter1 < processLength:
dgclOutput = inputPath + st + "_" + (i + x) + "output"
d["process{0}".format(x)] = subprocess.Popen(proccessArray(i + x) + ">>" + dgclOutput, shell=True, stdout=subprocess.PIPE)
counter1 + 1
else:
break
BatchSize 是我一次要处理的批次数。 Process Array 是它需要调用的命令列表。进程长度是可能的命令的数量。当计数器达到最大值时,计数器将退出循环。
所以我的第一个循环是批量大小的数量,而不是在字典中创建 5 个子进程的内部循环开始。
此代码不起作用,有人知道如何使它起作用或更好的解决方案吗?
【问题讨论】:
-
您实际上并没有在此代码中等待任何进程完成。
标签: python subprocess