Python等待Slurm工作?

我有一个python脚本,应该为要调用的外部程序生成一堆输入。对外部程序的调用将通过slurm进行。

我想要的是脚本等待所有生成的对外部程序的调用完成(而不是slurm命令,即外部程序的实际执行),然后解析外部程序生成的输出,并执行一些操作数据。

我尝试了子流程调用,但它仅等待slurm提交命令。有什么建议吗?


达令说
浏览 232回答 2
2回答

精慕HU

解决方案1我建议您以较小的步骤分解管道,然后可以在bash脚本等中将其自动化。首先,您需要生成所有需要通过slurm运行的命令。如果将它们提交为Slurm作业数组(请参见此处),则可以同时提交用于解析所有这些命令输出的脚本。使用slurm依赖项,您可以使作业仅在作业阵列完成后才开始。解决方案2您可以在python脚本中执行while循环并检查作业的状态:import timet = 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在节点上分配您的作业。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python