2010-09-12 284 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,則需要更多工作。