Python等Slurm工作?
作者:互联网
我有一个python脚本,应该为要调用的外部程序生成一堆输入.对外部计划的呼吁将是通过slurm.
我想要的是让我的脚本等到所有生成的外部程序调用完成后(不是slurm命令,实际执行外部程序),然后解析外部程序生成的输出,做一些事情数据.
我尝试了子进程调用,但它只等待slurm submission命令.有什么建议吗?
解决方法:
解决方案1
我建议以较小的步骤打破您的管道,然后可以在bash脚本等中自动化.
首先,生成需要通过slurm运行的所有命令.如果您将它们作为slurm作业数组提交(参见例如here),则可以同时提交解析所有这些命令输出的脚本.使用slurm依赖项,只有在作业数组完成后才能启动此作业.
解决方案2
您可以在python脚本中执行while循环并检查作业的状态:
import time
t = time.time()
while True:
# Break if this takes more than some_limit
if time.time() - t > some_limit:
break
# Check if the jobs are done. This could be done by
# grep'ing squeue for your username and some tags
# that you name your jobs
check_for_completion()
# Sleep for a while depending on the estimated completion time of the jobs
time.sleep(some_time)
解决方案3
在slurm上保留N个节点并在那里运行你的脚本.这避免了前端的混乱.我建议gnu parallel在节点上分配你的工作.
标签:slurm,python 来源: https://codeday.me/bug/20190828/1746548.html