Python implements the timer timer method through threads

  • 2020-04-02 14:41:55
  • OfStack

This article illustrates python's method of implementing timer timer with threads. Share with you for your reference. Specific analysis is as follows:

This python class implements a timer effect that is very simple to invoke and allows the system to periodically execute a specified function

Here's how to implement the timer using the threading module.

Do a simple experiment before using:


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

The operation results are as follows:


>python hello.py
hello world
hello world
hello world

The following is the implementation of the timer class:


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

The above code is passed by running in Python 2.5.4

I hope this article has helped you with your Python programming.


Related articles: