python周期性定时器

一、用thread实现定时器

py_timer.py文件

#!/usr/bin/python
#coding:utf-8

import threading
import os
import sys

class _Timer(threading.Thread):
    def __init__(self, interval, function, args=[], kwargs={}):
        threading.Thread.__init__(self)
        self.interval = interval 
        self.function = function
        self.args = args
        self.kwargs = kwargs
        self.finished = threading.Event()

    def cancel(self):
        self.finished.set() 

    def run(self):
        self.finished.wait(self.interval) 
        if not self.finished.is_set():
            self.function(*self.args, **self.kwargs)
        self.finished.set()
        
class LoopTimer(_Timer):
    def __init__(self, interval, function, args=[], kwargs={}):
        _Timer.__init__(self, interval, function, args, kwargs)

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


def testlooptimer():
    print("loop timer")


if __name__ == '__main__':
    t = LoopTimer(3.0,testlooptimer)
    t.start()


二、 使用

import py_timer

def serv_start():
#Perform first fork.
try:
            thread_timer = py_timer.LoopTimer(timeout, start_timer)
            thread_timer.start()
            thread_timer.cancel()  #

        except Exception, ex:                                                       
            print("daemon: %s %s", type(ex), ex)


def start_timer():

print 'hello'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值