python通过线程实现定时器timer的代码

  • Post author:
  • Post category:python



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




使用前先做一个简单试验:



import


threading

def


sayhello():



print


"hello world"



global


t


#Notice: use global variable!



t


=


threading.Timer(


5.0


, sayhello)



t.start()

t


=


threading.Timer(


5.0


, sayhello)

t.start()


运行结果如下


>python hello.py

hello world

hello world

hello world


下面是定时器类的实现:


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()


以上代码在Python 2.5.4中运行通过


以上代码在Python


2.5


.


4


中运行通过