使用 threading 模組中的 Timer
Python 的 threading 模組,是 Python 標準函式庫裡面的模組,所以不用特別安裝即可使用,雖然功能不是很多,但是基本多執行緒程式設計常用的功能它都有,在這我們會用到該模組的 Timer , Timer 是一個執行緒,它可以在我們指定的時間間隔之後執行一個函式。
最簡單使用 Timer,基本上必需具備下列語法:
import threading ;timer = threading.Timer(timer_start_time, func , func_param);timer.start();
其中使用 threading .Timer 建立執行緒時,至少需傳入2個參數,第一個參數 timer_start_time為,預計於多久後執行的時間間隔(單位是秒),第二個參數 func 為所要呼叫的函式名,第三個參數 func_param 是呼叫函式的引數(tuple),如果所呼叫的函式沒引數的話可省略。
前面提到 Timer 建立執行緒時,所要傳入的第一個參數,為預計於多久後執行的時間間隔,但我們想要的是指定時間執行,這時就需要將指定時間換算為時間間隔,這時可用 datetime 模組進行計算轉算,語法如下:
import datetime;
#取得現在時間now_time = datetime.datetime.now();#設定預計執行的時間next_time = datetime.datetime.strptime(str(next_year)+"-"+str(next_month)+"-"+str(next_day)+str(next_time), "%Y-%m-%d %H:%M:%S");#計算預定執行的時間與現在的時間間隔,並換算為秒數。timer_start_time = (next_time - now_time).total_seconds();
以下為示範每日定時關機的程式碼:
sched 模組是 Python 內建的模組,它是一個排程(延時處理機制),每次想要定時執行某任務都必須寫入一個排程,其執行為依序執行,基本上必需具備下列語法:
import sched;from datetime import datetime;import time;
#初始化 schedule
schedule = sched.scheduler(time.time, time.sleep)#設定 schedule 及執行schedule.enter(timer_start_time, 0, func,())schedule.run();
相較於 threading 模組中的 Timer,其步驟多了一步初始化的動作,其設定一樣是預計執行時間的間隔,但其 enter 內的參數不能省略,所以所于呼叫的函式就 算沒有引數,也要給一個空tuple (),同樣示範每日定時關機的程式碼如下:
可以看到基本上概念跟前一個是差不多的,只不過是應用不同模組來執行。
結語
對於每日固定執行的工作,我們可以透過 Sikuli 來定時執行 ,將例行工作自動化,將節省下來的時間應用在更有生產力的工作。
沒有留言:
張貼留言