Использование subprocess.call для запуска файла Python? - PullRequest
0 голосов
/ 19 марта 2019

Я использую subprocess.call для выполнения другого файла Python. Учитывая, что вызываемый скрипт никогда не прекратит выполнение, поскольку он находится внутри бесконечного цикла, как я могу позволить исходному скрипту продолжить выполнение после вызова подпроцесса?

Пример: У меня есть script1.py, который выполняет некоторые вычисления, а затем вызывает script2.py, используя subprocess.call(["python", "script2.py"]), так как он находится внутри бесконечного цикла, скрипт1 застревает при выполнении, есть ли другой способ запустить файл, кроме использования модуля подпроцесса?

1 Ответ

1 голос
/ 19 марта 2019

subprocess.call(["python", "script2.py"]) ожидает завершения подпроцесса.

Просто используйте Popen вместо:

proc = subprocess.Popen(["python", "script2.py"])

Позже вы можете сделать proc.poll(), чтобы увидеть, закончен ли он или нет, или proc.wait(), чтобы дождаться его завершения (как это делает call), или просто забыть об этом и вместо этого делать другие вещи.

Кстати, вы можете убедиться, что вызывается тот же самый python, и ОС может его найти, используя sys.executable вместо просто "python":

subprocess.Popen([sys.executable, "script2.py"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...