【问题标题】:Cluster qsub check when job is done. python集群 qsub 检查作业何时完成。 Python
【发布时间】:2012-10-09 11:55:59
【问题描述】:

我正在构建一个 python 管道,并在该管道脚本中调用另一个 python 脚本,该脚本使用 qsub 向集群提交作业(该作业包含 op 70 个作业) 现在我需要这些作业的输出来继续工作。

如何在所有 70 个作业完成之前“暂停”python 脚本?

我无法修改提交给服务器的脚本,所以必须在我自己的脚本中完成。 (使用 AMD64 集群)

编辑:

这就是我调用其他脚本的方式:

os.system("python ScriptThatQsub.py arg1 arg2")

我仍在努力。并搜索interwebz,但我不禁想知道……这可能吗??

【问题讨论】:

  • 您在使用 Sun Grid Engine 吗?如果是这样,那么您可以使用 -hold_jid 提交自己的作业,该作业将等到 作业完成后再开始您的作业。
  • 我认为是神经节。使用 Rocks 集群。我对集群还是个新手,所以我不太确定。
  • qsub 会阻塞吗?看看它是否有一个命令行选项来等待作业完成。在我工作过的所有服务器上,qsub 立即返回,服务器端守护程序从那里接管作业控制。如果是这种情况,除了定期解析 showq 的结果(在两者之间休眠)并查看您的工作是否仍在运行/等待之外,我不确定如何使其工作。
  • 是的,qsub 立即返回。这就是我的问题所在。所以..我必须从 showq 解析结果,看看我的工作是否仍然有效?如果是这样的话,睡觉? (在我的情况下为 qstat)当然不是理想的解决方案..

标签: python cluster-computing qsub


【解决方案1】:

只需使用-sync y 中的命令行标志qsub -sync y my_job

from subprocess import Popen
job = Popen(["qsub", "-sync", "y", "my_job"])
job.communicate()

【讨论】:

    【解决方案2】:

    我刚刚将集群中的 Qstat 放入一个变量中,并检查了是否在该列表中找到了我的作业名。如果是这样的话。睡一会儿。 感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      相关资源
      最近更新 更多