Если вы хотите порождать несколько процессов одновременно («асинхронно», «параллельно»), используйте
p = subprocess.Popen("<command> <args>", shell=True, stdout=subprocess.PIPE)
, который мгновенно возвращает экземпляр Popen (объект, представляющий порожденный процесс).
shell=True
позволяет передавать команду в виде «простой строки» (например, "myprog arg1 arg2"
). Без shell=True
вы должны передать список аргументов, включая имя программы, в качестве первого аргумента (например, ["myprog", "arg1", "arg2"]
).
stdout=PIPE
обеспечивает захват stdout в канале (объект, похожий на файл) в Python терминах), к которым можно получить доступ через p.stdout
. Команда Use может прочитать вывод вашей программы через p.stdout.read().decode()
, но учтите, что этот вызов блокирует , то есть он ожидает остановки программы, поэтому в вашем случае убедитесь, что вы вызвали все необходимые процессы перед чтением их выходы.
Для ожидания программы без чтения ее выходных данных используйте p.wait()
.
Дополнительная информация в Python документах: подпроцесс .