1 # -*- coding: utf-8 -*- 3 """ 4 定时器方法 5 """ 6 import threading 7 import time 8 9 10 class Timer(threading.Thread): 11 def __init__(self, fn, args=(), sleep=0, lastDo=True): 12 threading.Thread.__init__(self) 13 self.fn = fn 14 self.args = args 15 self.sleep = sleep 16 self.lastDo = lastDo 17 self.setDaemon(True) 18 19 self.isPlay = True 20 self.fnPlay = False 21 22 def __do(self): 23 self.fnPlay = True 24 self.fn(*self.args) 25 self.fnPlay = False 26 27 def run(self): 28 while self.isPlay: 29 self.__do() 30 time.sleep(self.sleep) 31 32 def stop(self): 33 # stop the loop 34 self.isPlay = False 35 while True: 36 if not self.fnPlay: 37 break 38 time.sleep(0.01) 39 # if lastDo,do it again 40 if self.lastDo: 41 self.__do()