问题描述
我有一个使用 bjobs 提交多个作业的 python 脚本。下面是代码片段
for jobs in job_list:
i=0
os.system("bsub -J JOB_{} jobs".format(str(i))
i+=1
我只想在所有作业完成后才打印“已完成运行”。 我该怎么做?
解决方法
您需要获取每个作业的结果,因此请改用 subprocess 模块。
如果你在一个单独的线程上调用每个作业,你可以使用一个共享列表来保存每个作业的结果,所以每当所有工作都完成时,这个列表将与 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")
'''