我需要在进程结束时自动启动的脚本。 我使用此代码,但它等待execfile。如何运行它异步?要执行脚本重新启动的效果。
import time
print "start"
time.sleep(5)
print "go exec"
execfile('res.py')
print "stop exec"
答案 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上看到一些示例,用于指定脚本应运行的不同时间间隔。