открытие файлов и исполнения кода. Subprocess python
День добрый господа! Есть код который открывает файлы .py
import subprocess
files = ["sqlite_connect.py", "sqlite_connect1.py"] # файлы, которые нужно запустить
for file in files:
subprocess.Popen(args=["start", "python", file], shell=True, stdout=subprocess.PIPE)
Проблема в том, что код в файлах исполняется частично, а сами терминалы и соответственно програмки закрываются. В самих файлах циклы. Поогите найти решения проблемы , нужно чтобы полностью файлы исполнялись.
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
В принципе, процессы запущенные из вашего кода должны отрабатывать до конца. Хотя родительский процесс и завершится не дожидаясь их окончания.
Чтобы дождаться их завершения:
- Надо добавить опцию
/WAITкомандеstart, а то иначе уже она не будет ждать завершения запущенного из-под неё питоновского интерпретатора. - Использовать
Popen.wait()чтобы дождаться завершения процессов.
import subprocess
files = ["sqlite_connect.py", "sqlite_connect1.py"] # файлы, которые нужно запустить
# запускаем процессы
procs = [subprocess.Popen(args=["start", "/WAIT", "python", file], shell=True, stdout=subprocess.PIPE) for file in files]
print(f"Запущено {len(procs)} процессов")
# ждём их завершения
while procs:
procs.pop().wait()
print(f"Осталось {len(procs)} процессов")
print("Конец")
Если запускать python напрямую (без использования start), то тоже должно работать. Правда в этом случае вы не увидите терминалов дочерних процессов.