用Python编写简单的定时器的方法
下面介绍以threading模块来实现定时器的方法。
首先介绍一个最简单实现:
importthreading defsay_sth(str): printstr t=threading.Timer(2.0,say_sth,[str]) t.start() if__name__=='__main__': timer=threading.Timer(2.0,say_sth,['iamheretoo.']) timer.start()
不清楚在某些特殊应用场景下有什么缺陷否。
下面是所要介绍的定时器类的实现:
classTimer(threading.Thread): """ verysimplebutuselesstimer. """ def__init__(self,seconds): self.runTime=seconds threading.Thread.__init__(self) defrun(self): time.sleep(self.runTime) print"Buzzzz!!Time'sup!" classCountDownTimer(Timer): """ atimerthatcancountsdowntheseconds. """ defrun(self): counter=self.runTime forsecinrange(self.runTime): printcounter time.sleep(1.0) counter-=1 print"Done" classCountDownExec(CountDownTimer): """ atimerthatexecuteanactionattheendofthetimerrun. """ def__init__(self,seconds,action,args=[]): self.args=args self.action=action CountDownTimer.__init__(self,seconds) defrun(self): CountDownTimer.run(self) self.action(self.args) defmyAction(args=[]): print"Performingmyactionwithargs:" printargs if__name__=="__main__": t=CountDownExec(3,myAction,["hello","world"]) t.start()