使用Python子进程运行SLURM脚本以提交多个长作业到队列并等待作业完成后再继续python脚本

时间:2017-04-27 23:20:40

标签: python queue subprocess wait slurm

情况基础是我使用Python的subprocess模块运行SLURM脚本,该脚本将一些作业提交到我使用的某些HPC资源的队列中。我希望Python脚本等到所有提交的作业都完成。我试着这样做:

proc = subprocess.Popen(['sbatch slurm.sh'],shell=True)
proc.wait()

但是,它只等待提交作业而不是所有作业完成。任何人对如何使这项工作有任何建议?

注意:我的一个想法可能是让子进程以某种方式与SLURM脚本生成的.out文件进行通信(并等待它完成编辑可能?),但我不确定这是如何工作的

感谢您的任何想法!

2 个答案:

答案 0 :(得分:1)

使用python库与Slurm交互,例如

您将能够以非常简单的方式管理slurm工作。

答案 1 :(得分:1)

我最近研究了slurm,并使用sbatch的-W或--wait参数使sbatch命令首先完成其执行,然后执行python代码。像这样的东西-W slurm.sh