sched模塊實(shí)現(xiàn)了一個(gè)時(shí)間調(diào)度程序落塑,該調(diào)度程序可以通過(guò)單線程執(zhí)行來(lái)處理按照時(shí)間尺度進(jìn)行調(diào)度的事件吝秕。
通過(guò)調(diào)用scheduler.enter(delay,priority,func,args)函數(shù)转绷,可以將一個(gè)任務(wù)添加到任務(wù)隊(duì)列里面,當(dāng)指定的時(shí)間到了,就會(huì)執(zhí)行任務(wù)(func函數(shù))随闽。
-
參數(shù)說(shuō)明
- delay:任務(wù)的間隔時(shí)間。
- priority:如果幾個(gè)任務(wù)被調(diào)度到相同的時(shí)間執(zhí)行肝谭,將按照priority的增序執(zhí)行這幾個(gè)任務(wù)掘宪。
- func:要執(zhí)行的任務(wù)函數(shù)
- args:func的參數(shù)
樣例一
import time,sched
#周期性執(zhí)行給定的任務(wù)
#初始化sched模塊的scheduler類
#第一個(gè)參數(shù)是一個(gè)可以返回時(shí)間戳的函數(shù),第二個(gè)參數(shù)可以在定時(shí)未到達(dá)之前阻塞攘烛。
s = sched.scheduler(time.time,time.sleep)
#被周期性調(diào)度觸發(fā)的函數(shù)
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秒鐘執(zhí)行perform1
if func == '2':
s.enter(0,0,perform2,(20,))#每20秒執(zhí)行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()