Python вложенный подпроцесс. Открыто не ждет друг друга - PullRequest
0 голосов
/ 03 апреля 2020

EDIT: это выполняется в кластере с командой запуска, подавляющей вывод на консоль и записывающей его непосредственно в выходной файл, указанный в команде запуска!

У меня есть сценарий, который запускает сценарий, который запускает скрипт. Это происходит следующим образом:

simulation_1 = subprocess.Popen("python script-1.py", shell=True)
simulation_1.wait()

simulation_2 = subprocess.Popen("python script-2.py", shell=True)
simulation_2.wait()

script-1.py также имеет вызовы Popen () следующим образом:

/*script-1.py*/

Procs = []
for sim in sims:
    Procs.append(subprocess.Popen("python run.py parameters.txt", shell=True)

for proc in Procs:
    proc.wait()

Мне нужно моделирование_2 для ожидания процессов запуск в script-1.py завершен, но simulation_1.wait() не ждет?

Я попытался использовать связь:

simulation_1 = subprocess.Popen("python script-1.py", stdout=subprocess.PIPE, shell=True)
simulation_1.wait()
print("Communication: ", simulation_1.communicate()[0])
while simulation_1.communicate()[0] != "DONE":
    print("New communication: ", simulation_1.communicate()[0])
    time.sleep(60)

, но это дает мне ошибку:

stdout = self.stdout.read()
ValueError: read of closed file

Как заставить код ждать завершения моделирования во вложенных командах подпроцесса?

...