仅在所有 bjob​​ 完成后才打印“Jobs Finished”

问题描述

我有一个使用 bjob​​s 提交多个作业的 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")
'''

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...