У меня есть сервер Linux, используемый для научных расчетов.Сервер предоставляет bsub < [filename]
для отправки [имя файла] в очереди, вычисление вернет файлы типа «A.chk» через 2 часа;А также bjobs
для проверки состояния всех заданий, включая jobID, состояние выполнения (RUN, PEND, EXIT) и т. Д. Теперь я хочу выполнить следующее требование:
- Отправка A.sh к серверу;
- Ожидание завершения вычислений, предположим, что оно генерирует B.chk;
- Выполните другой расчет с B.chk и существующим сценарием C.py
- Выполните все эти действия автоматически в одном скрипте .py.
Мне удалось получить последний идентификатор вакансии и выполнить статус в скрипте Python.И я попробовал следующее решение:
import os
import time
os.system("bsub < %s" %(A.sh))
job_ID = get_jobID()
while(get_runstatus(jobID) != "RUN" and get_runstatus(jobID) != "PEND"):
time.sleep(30)
if "B.chk" in os.listdir():
os.system("python C.py")
Но цикл while на сервере занимает слишком много публичных ресурсов, поэтому я не хочу этого делать.Затем я искал решения, подобные process.join()
в SubProcess , но последовательность заданий на сервере не может рассматриваться как подпроцесс в Python.Поэтому я здесь прошу вас о лучших решениях.Спасибо.