python通过线程实现定时器timer的方法

时间:2021-09-19 09:03:15

本文实例讲述了python通过线程实现定时器timer的方法。分享给大家供大家参考。具体分析如下:

这个python类实现了一个定时器效果,调用非常简单,可以让系统定时执行指定的函数

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

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

  1. import threading 
  2. def sayhello(): 
  3.     print "hello world" 
  4.     global t    #Notice: use global variable! 
  5.     t = threading.Timer(5.0, sayhello) 
  6.     t.start() 
  7. t = threading.Timer(5.0, sayhello) 
  8. t.start() 

运行结果如下:

  1. >python hello.py 
  2. hello world 
  3. hello world 
  4. hello world 

下面是定时器类的实现:

  1. class Timer(threading.Thread): 
  2.     ""
  3.     very simple but useless timer. 
  4.     ""
  5.     def __init__(self, seconds): 
  6.         self.runTime = seconds 
  7.         threading.Thread.__init__(self) 
  8.     def run(self): 
  9.         time.sleep(self.runTime) 
  10.         print "Buzzzz!! Time's up!" 
  11. class CountDownTimer(Timer): 
  12.     ""
  13.     a timer that can counts down the seconds. 
  14.     ""
  15.     def run(self): 
  16.         counter = self.runTime 
  17.         for sec in range(self.runTime): 
  18.             print counter 
  19.             time.sleep(1.0) 
  20.             counter -= 1 
  21.         print "Done" 
  22. class CountDownExec(CountDownTimer): 
  23.     ""
  24.     a timer that execute an action at the end of the timer run. 
  25.     ""
  26.     def __init__(self, seconds, action, args=[]): 
  27.         self.args = args 
  28.         self.action = action 
  29.         CountDownTimer.__init__(self, seconds) 
  30.     def run(self): 
  31.         CountDownTimer.run(self) 
  32.         self.action(self.args) 
  33. def myAction(args=[]): 
  34.     print "Performing my action with args:" 
  35.     print args 
  36. if __name__ == "__main__"
  37.     t = CountDownExec(3, myAction, ["hello""world"]) 
  38.     t.start() 

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

希望本文所述对大家的Python程序设计有所帮助。