2012-07-17 34 views
1

一個計算額後,恢復:設置腳本暫停和更新下面的時間

我有有我做了計算,以設置我的劇本基於幾個因素,睡覺的時間的函數的腳本,這意味着腳本可能不需要再運行半個小時或可能需要幾天。

現在,我認爲time.sleep(秒)會將程序設置爲睡眠狀態,然後將其喚醒並再次運行。

time.sleep(3600) 
runScriptAgain() 

顯然,這並沒有做什麼,我認爲它做到了。當然,大多數事情似乎從未像我想的那樣做,學習的樂趣!

無論如何,一旦我發現腳本從未恢復,我四處尋找其他方法來做到這一點。有人提到了os.exec,但是從我的(非常有限的)知識看來,它似乎是用來從腳本內部運行其他內容的。然後我嘗試了threading.Timer函數,但似乎沒有做我想要的。或者我不知道我在做什麼,這更可能。然後我看到有人提到線程和守護進程以及我根本不知道的東西。

我在想也許是一個for循環,但這似乎非常業餘(鍋會見水壺!),我不知道如何甚至可以工作(如果有的話)。

timeToSleep = SleepValue() 
count = 0 
while count < timeToSleep: 
    count + 1 
    time.sleep(1) 
runscript() 

那麼,有沒有一種簡單的方法來設置一個腳本來停止運行的時間具體數額,再次運行,然後睡覺,直到下一次?我認爲必須有一個非常簡單的方法來做到這一點,但我真的沒有線索。我在使用Python 3.2.3的Windows 7上工作,而且我現在只學習了幾個月的python,所以任何複雜的工作都可能超出我的技能水平。

更新時間:

def something(): 
    print('Hello!') 

def sleep(): 
    time.sleep(5) 
    runscript() 

def runscript(): 
    something() 
    sleep() 

runscript() 

好吧,這是我的代碼是如何設定目前。我用這個簡單的代碼試了一下,看起來問題是它永遠不會醒來?我不確定發生了什麼事。我認爲它會調用第一個功能,打印該項目,然後休眠5秒鐘,然後重複廣告。也許有人可以解釋我應該怎麼做。

謝謝!

+2

爲什麼不使用Windows的任何週期性調度程序來運行腳本,在這一點上它看到它是否有任何事情要做? – 2012-07-17 03:13:29

+0

哈,對不起,名稱錯了Ignacio。我會更新我的問題,因爲我認爲問題在於我正在使用time.sleep函數做錯了我現在使用它的方式。 – 2012-07-17 04:36:59

回答

1

你可能想看看python的sched這個模塊,或者可能是Advanced Python Scheduler。無論哪種方式,如果要從腳本中運行計劃,則必須將其設置爲長時間運行的進程或服務。 Ignacio Vazquez-Abrams的想法是最簡單的 - 只需使用操作系統的調度程序(Window的任務調度程序或Linux上的cron)每隔x分鐘運行一次。讓腳本最初讀取配置文件以確定它是否應該完成執行或退出。如果您需要在下次運行時更新或更改,則只需更新配置文件即可。

0

我設置了一個像這樣的腳本,time.sleep(3600)適用於我。將運行代碼放在while循環中,然後讓它運行。沒有必要比較一些價值。

KEEP_GOING = should_we_keep_going() 

while KEEP_GOING: 
    Time.sleep(100) 
    Runscript() 
KEEP_GOING = should_we_keep_going() 

另外我想說設置一個計劃任務的想法是一個奇妙的想法。