python自动重启脚本

时间:2010-09-12 06:00:23

标签: python

我需要在进程结束时自动启动的脚本。 我使用此代码,但它等待execfile。如何运行它异步?要执行脚本重新启动的效果。

import time
print "start"
time.sleep(5)
print "go exec"
execfile('res.py')
print "stop exec"

2 个答案:

答案 0 :(得分:2)

许多os.exec...函数中的一个(在Unix-y系统上,包括Linux和Mac,以及Windows上)可能是你想要的。您需要使用(大致)相同的参数执行sys.executable(在非Windows操作系统上的.exe - 或等效的可执行文件 - 当前正在使用的Python版本)在sys.argv中列出(尽管如果你还需要重现一些Python命令行标志,例如-u用于无缓冲的std I / O),可能会有更多工作。

答案 1 :(得分:1)

要从Python异步执行程序,可以使用如here所示的Popen函数:

import subprocess
# ...
pid = subprocess.Popen(["/usr/bin/python2.7", "res.py"]).pid

也就是说,如果你一遍又一遍地调用某些东西,你可能想要使用cron(所有UNIX变体,包括Linux和Mac OS X)或launchd(Mac OS X)。您可以通过调用命令crontab -e然后添加如下所示的行来创建一个cron作业(下面的星号表示“每个”,并且对应于月份,小时,月份,月份和天数。周):

*    *    *    *    *    /usr/bin/python2.7  script_to_execute.py >/dev/null 2>&1

上面一行每分钟都会运行“script_to_execute.py”。您可以在cron Wikipedia page上看到一些示例,用于指定脚本应运行的不同时间间隔。