Python 自动重启脚本
我需要一个脚本,它在处理结束时能够自动启动自己。我用的这段代码会等着执行完execfile。请问怎么才能异步运行它呢?这样就能实现脚本的自动重启效果。
import time
print "start"
time.sleep(5)
print "go exec"
execfile('res.py')
print "stop exec"
2 个回答
2
在很多 os.exec... 函数中(适用于类Unix系统,比如Linux和Mac,还有Windows),可能正是你需要的。你需要执行 sys.executable(这就是当前使用的Python版本对应的 .exe
文件,或者在非Windows系统上是类似的可执行文件),并且大致使用与 sys.argv
中列出的相同参数(不过如果你还需要复现一些Python命令行标志,比如 -u
用于无缓冲的标准输入输出,可能会需要多做一些工作)。
1
如果你想在Python中异步执行一个程序,可以使用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的维基页面上查看一些示例,了解如何设置不同的时间间隔来运行脚本。