Печатайте «Работа завершена», только когда все задания выполнены.
У меня есть сценарий 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")
'''