为了账号安全,请及时绑定邮箱和手机立即绑定

Python等待Slurm工作?

Python等待Slurm工作?

达令说 2021-05-03 13:55:56
我有一个python脚本,应该为要调用的外部程序生成一堆输入。对外部程序的调用将通过slurm进行。我想要的是脚本等待所有生成的对外部程序的调用完成(而不是slurm命令,即外部程序的实际执行),然后解析外部程序生成的输出,并执行一些操作数据。我尝试了子流程调用,但它仅等待slurm提交命令。有什么建议吗?
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

解决方案1


我建议您以较小的步骤分解管道,然后可以在bash脚本等中将其自动化。首先,您需要生成所有需要通过slurm运行的命令。如果将它们提交为Slurm作业数组(请参见此处),则可以同时提交用于解析所有这些命令输出的脚本。使用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在节点上分配您的作业。


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信