91美食网
您的当前位置:首页用Python编写简单的定时器的方法

用Python编写简单的定时器的方法

来源:91美食网


下面介绍以threading模块来实现定时器的方法。

首先介绍一个最简单实现:

import threading

def say_sth(str):
 print str
 t = threading.Timer(2.0, say_sth,[str])
 t.start()

if __name__ == '__main__':
 timer = threading.Timer(2.0,say_sth,['i am here too.'])
 timer.start()

不清楚在某些特殊应用场景下有什么缺陷否。

下面是所要介绍的定时器类的实现:

class Timer(threading.Thread): 
 """ 
 very simple but useless timer. 
 """ 
 def __init__(self, seconds): 
 self.runTime = seconds 
 threading.Thread.__init__(self) 
 def run(self): 
 time.sleep(self.runTime) 
 print "Buzzzz!! Time's up!" 
 
 class CountDownTimer(Timer): 
 """ 
 a timer that can counts down the seconds. 
 """ 
 def run(self): 
 counter = self.runTime 
 for sec in range(self.runTime): 
 print counter 
 time.sleep(1.0) 
 counter -= 1 
 print "Done" 
 
 class CountDownExec(CountDownTimer): 
 """ 
 a timer that execute an action at the end of the timer run. 
 """ 
 def __init__(self, seconds, action, args=[]): 
 self.args = args 
 self.action = action 
 CountDownTimer.__init__(self, seconds) 
 def run(self): 
 CountDownTimer.run(self) 
 self.action(self.args) 
 
 def myAction(args=[]): 
 print "Performing my action with args:" 
 print args 
 if __name__ == "__main__": 
 t = CountDownExec(3, myAction, ["hello", "world"]) 
 t.start() 
显示全文