Python定时器编写服务进程

发布时间:2019-07-21编辑:脚本学堂
分享一个python定时器的例子,用于python编程服务进程时定时获取数据,有需要的朋友参考下。

在编写服务进程时,往往需要定时获取一些数据,需要定时来执行一些操作。
python中并没有合适的定时器,只好自己搞定了。

例如:
 

复制代码 代码示例:
import threading,time
 
class Timer(threading.Thread):
    def __init__(self,fn,args=(),sleep=0,lastDo=True):
        threading.Thread.__init__(self)
        self.fn = fn
        self.args = args
        self.sleep = sleep
        self.lastDo = lastDo
        self.setDaemon(True)
        
        self.isPlay = True
        self.fnPlay = False
    
    def __do(self):
        self.fnPlay = True
        apply(self.fn,self.args)
        self.fnPlay = False
    
    def run(self):
        while self.isPlay :
            time.sleep(self.sleep)
            self.__do()
    
    def stop(self):
        #stop the loop
        self.isPlay = False
        while True:
            if not self.fnPlay : break
            time.sleep(0.01)
        #if lastDo,do it again
        if self.lastDo : self.__do()
 

在定时执行这些操作时,并不想影响主程序的正常进行,所以继承了线程类,有2个标记符,这两个标记符用来保证程序退出时能够正常退出(执行完毕才退出,而不是直接退出)。
另外lastDo这个标记符用来申明当定时器收到结束命令时是否最后执行一次程序,以保证数据的完整。