python通过线程实现定时器timer

发布时间:2019-08-06 13:55:38编辑:auto阅读(1644)

    下面介绍以threading模块来实现定时器的方法。 
    使用前先做一个简单试验: 
    import threading
    def sayhello():
            print "hello world"
            global t        #Notice: use global variable!
            = threading.Timer(5.0, sayhello)
            t.start()
     
    = threading.Timer(5.0, sayhello)
    t.start()
     
     
    #该代码片段来自于: http://www.sharejs.com/codes/python/8815
    运行结果如下
    >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__":
            = CountDownExec(3, myAction, ["hello""world"])
            t.start()
     
     
     
    #该代码片段来自于: http://www.sharejs.com/codes/python/8815
    以上代码在Python 2.5.4中运行通过
    以上代码在Python 2.5.4中运行通过

关键字