即使任务挂起,如何运行任务并继续执行程序

时间:2018-06-16 20:38:05

标签: python popen

所以我使用以下代码:

def run(cmd, timeout_sec):
    #I have to use this hack because subprocess.run's timeout function doesn't actually timeout :(
    #picked up this function from here:
    #https://stackoverflow.com/a/10768774/5905599
    def kill_proc(proc, timedout):
        timedout["value"] = True
        proc.kill()

    output_logger.info("Running: %s" % cmd)
    proc = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    timedout = {"value": False}
    timer = threading.Timer(timeout_sec, kill_proc, [proc, timedout])
    timer.start()
    stdout, stderr = proc.communicate()
    timer.cancel()
    return stdout.decode("utf-8"), stderr.decode("utf-8"), proc.returncode, timedout["value"]

我有一个挂起的过程。我甚至尝试使用" kill -9"杀死进程然后最终重新启动。这个过程并不是世界末日,但是不好的是我的计划停止了。有没有办法修改上面的功能,使它继续执行,然后我可以给自己发电子邮件来修复计算机(最后,我不得不重新启动)。

谢谢!

0 个答案:

没有答案