У меня есть функция, которая создает «пул» процесса и выполняет каждый процесс в пуле.
def sendAndExecutePybotTests(poolProcessNum):
fullList = _generatePybotList()
print fullList
pool = [fullList[i:i+int(poolProcessNum)] for i in range(0, len(fullList), int(poolProcessNum))]
for chunk in pool:
procs = []
for executeLine in chunk:
proc = Process(target=_executePybotTest, args=(executeLine,))
procs.append(proc)
# time interval=1 second for each suite
time.sleep(1)
proc.start()
for proc in procs:
proc.join()
executePybotTest (который просто вызывает подпроцесс для выполнения команды):
def _executePybotTest(executeLine):
subprocess.call(executeLine,shell=True)
Я использую это для параллельного запуска автоматических тестов.Но поскольку этот пул присоединяется, он ожидает завершения всех процессов в пуле, чтобы перейти к другим элементам, ожидающим выполнения.
Я пытался реализовать очередь и автоматически выполнять следующую в очереди после завершения одного из процессов в пуле.Я не уверен, как это сделать.