1. 程式人生 > >python 定時器,輪詢定時器

python 定時器,輪詢定時器

python 定時器預設定時器只執行一次,第一個引數單位S,幾秒後執行

import threading

def fun_timer():
    print('Hello Timer!')

timer = threading.Timer(1, fun_timer)
timer.start()

改成以下可以執行多次

建立loop_timer.py 

from threading import _Timer
class LoopTimer(_Timer):
    """Call a function after a specified number of seconds: 


            t = LoopTi
            mer(30.0, f, args=[], kwargs={}) 
            t.start() 
            t.cancel()     # stop the timer's action if it's still waiting 


    """

    def __init__(self, interval, function, args=[], kwargs={}):
        _Timer.__init__(self, interval, function, args, kwargs)

    def run(self):
        '''self.finished.wait(self.interval) 
        if not self.finished.is_set(): 
            self.function(*self.args, **self.kwargs) 
        self.finished.set()'''
        while True:
            self.finished.wait(self.interval)
            if self.finished.is_set():
                self.finished.set()
                break
            self.function(*self.args, **self.kwargs)

呼叫

t = LoopTimer(120, fun_timer)
        t.start()