Как я могу управлять процессами в среде Python-Bash? - PullRequest
1 голос
/ 23 сентября 2019

У меня есть сервер Linux, используемый для научных расчетов.Сервер предоставляет bsub < [filename] для отправки [имя файла] в очереди, вычисление вернет файлы типа «A.chk» через 2 часа;А также bjobs для проверки состояния всех заданий, включая jobID, состояние выполнения (RUN, PEND, EXIT) и т. Д. Теперь я хочу выполнить следующее требование:

  1. Отправка A.sh к серверу;
  2. Ожидание завершения вычислений, предположим, что оно генерирует B.chk;
  3. Выполните другой расчет с B.chk и существующим сценарием C.py
  4. Выполните все эти действия автоматически в одном скрипте .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.Поэтому я здесь прошу вас о лучших решениях.Спасибо.

1 Ответ

0 голосов
/ 26 сентября 2019

Хотя это не полностью отвечает на ваш вопрос, на github есть Python API для LSF

https://github.com/IBMSpectrumComputing/lsf-python-api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...