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
Как заставить код ждать завершения моделирования во вложенных командах подпроцесса?