无法通过Popen

时间:2018-12-06 22:47:37

标签: python slurm sbatch

Python 3.6

因此,我有一个仅向SLURM提交作业的功能。我目前并不在乎“作业已提交,作业ID”的输出。问题是--output--error标志没有在我提到的目录中生成输出文件。

def submitJob(self):
    # self.DEV_DIR and self.IDENT_DIR are absolute paths.
    cmds = [
        "sbatch",
        "-A",
        "devtest",
        "-p",
        "general",
        "--qos=normal",
        "-J",
        '"Parentage - %s - %s"' % (self.farmID, self.ident),
        "--nice=0",
        "-c",
        "1",
        "--mem=10240", # MB
        "--time=00:10:00",
        "--output",
        "%s/p_done.log" % (self.IDENT_DIR),
        "--error",
        "%s/p_error.log" % (self.IDENT_DIR),
        "PARENT/run_job.sh %s %s" % (self.farmID, self.ident)
    ]
    cmd = " ".join(cmds)
    p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
              shell=True, cwd=self.DEV_DIR+"/PROG", universal_newlines=True)
    output, err = p.communicate()
    return (output, err)

要清楚,该作业确实提交。如果我通常通过命令行调用sbatch,则会生成日志文件。

我认为在作业提交后,stdout管道将完全关闭,并且不会生成日志文件。我确实需要生成这些日志文件,因此出现了问题。一种替代方法是让run_job.sh之后在目录中创建一个简单的“完成”文件(脚本会监视这些文件的创建),但是如果作业超时,则此操作将无效。

触发此命令时目录存在。

在这种情况下,我是否缺少明显的东西阻止我从sbatch获取输出文件?

0 个答案:

没有答案