2010-09-12 249 views
1

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

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

回答

1

从Python的异步执行一个程序,你可以使用POPEN函数,如here

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

这就是说,如果你是一遍又一遍调用的东西,你可能需要使用cron(全UNIX变体,包括Linux和Mac OS X)或launchd(Mac OS X)。您可以通过调用命令crontab -e然后添加如下行(星号表示“each”,分别对应于一个月的月份,几个月,几个月的日期,星期几,几个月的天数)来创建cron作业:

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

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

2

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