Печатайте «Работа завершена», только когда все задания выполнены.

У меня есть сценарий Python, который отправляет несколько заданий с использованием bjobs. Ниже приведен фрагмент кода

       for jobs in job_list:
    i=0
    os.system("bsub -J JOB_{} jobs".format(str(i))
    i+=1

Я хочу напечатать «Завершение работы» только после того, как все задания будут выполнены. Как я могу сделать то же самое?

2 ответа

вам нужно будет получить результат каждого задания, поэтому вместо этого используйте модуль подпроцесса .

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

но если код представляет собой только приведенный выше фрагмент, вы можете сделать это:

      for index, job in enumerate(job_list):
    result = subprocess.call(f"bsub -J JOB_{index} jobs")
print("Finished runnning")

не уверен ... но, пожалуйста, попробуйте это !!

      counter = 0
for jobs in job_list:
    counter +=1
    i=0
    os.system("bsub -J JOB_{} jobs".format(str(i))
    i+=1
    if len(job_list) <= counter:
        print("Completed")
'''
Другие вопросы по тегам