Вызовите несколько .exe из Python - PullRequest
0 голосов
/ 19 апреля 2020

У меня проблема с тем, что я хочу вызвать несколько файлов .exe из Python одновременно, и один файл .exe содержит 5 аргументов. Как я могу это назвать? Я попытался os.system("process.exe arg1 arg2 arg3 arg4"), который работает, но он может запускать только один процесс за раз, и я также попробовал subprocess.run, однако, хотя он может вызывать процесс как subprocess.run("process.exe") Я не могу найти решение, как отправить аргументы, такие как subprocess.run("process.exe arg1 arg2 arg3") , Мне также нужно открыть командную строку как stdout, что может сделать команда os.system.

1 Ответ

1 голос
/ 19 апреля 2020

Если вы хотите порождать несколько процессов одновременно («асинхронно», «параллельно»), используйте

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 документах: подпроцесс .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...