1

我有一个使用 bjob​​s 提交多个作业的 python 脚本。下面是代码片段

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

我只想在所有作业完成后打印“已完成运行”。我该怎么做?

4

2 回答 2

1

您将需要获取每个作业的结果,因此请改用subprocess模块。

如果您在单独的线程上调用每个作业,则可以使用共享列表来保存每个作业的结果,因此每当所有工作完成时,此列表的大小将与 相同jobs_list,然后您可以打印正确的消息。

但如果代码只是上面的代码片段,你可以这样做:

for index, job in enumerate(job_list):
    result = subprocess.call(f"bsub -J JOB_{index} jobs")
print("Finished runnning")
于 2021-03-27T09:09:47.870 回答
0

不确定...但请尝试一下!

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")
'''
于 2021-03-27T08:59:03.943 回答