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

826次阅读  |  发布于5年以前

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

这个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程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8