sched模塊實現了一個時間調度程序,該調度程序可以通過單線程執行來處理按照時間尺度進行調度的事件。
通過調用scheduler.enter(delay,priority,func,args)函數,可以將一個任務添加到任務隊列里面,當指定的時間到了,就會執行任務(func函數)。
-
參數說明
- delay:任務的間隔時間。
- priority:如果幾個任務被調度到相同的時間執行,將按照priority的增序執行這幾個任務。
- func:要執行的任務函數
- args:func的參數
樣例一
import time,sched
#周期性執行給定的任務
#初始化sched模塊的scheduler類
#第一個參數是一個可以返回時間戳的函數,第二個參數可以在定時未到達之前阻塞。
s = sched.scheduler(time.time,time.sleep)
#被周期性調度觸發的函數
def event_func1():
print "func1 Time:",time.time()
def perform1(inc):
s.enter(inc,0,perform1,(inc,))
event_func1()
def event_func2():
print "func2 time:",time.time()
def perform2(inc):
s.enter(inc,0,perform2,(inc,))
event_func2()
def mymain(func,inc=2):
if func == '1':
s.enter(0,0,perform1,(10,))#每10秒鐘執行perform1
if func == '2':
s.enter(0,0,perform2,(20,))#每20秒執行perform2
if __name__ == "__main__":
mymain('1')
mymain('2')
s.run()
樣例二
import sched, time
s = sched.scheduler(time.time, time.sleep)
def do_something(sc):
print "Doing stuff..."
# do your stuff
s.enter(60, 1, do_something, (sc,))
s.enter(60, 1, do_something, (s,))
s.run()