该类可用于定时重复执行某函数,且不会阻塞主线程。
在不需要该定时器继续执行时在主线程中调用定时器的cancle方法即可。
from threading import Thread, Event
# exceptions
class ParaError(Exception):
"""
raise when parameters invalid.
"""
pass
class RepeatTimer(Thread):
def __init__(self, func, interval, counts=0, args=[], kwargs={}):
"""
@param func: function invoked at a configureble interval by a looping thread.
@param interval: invoke interval. must be positive or zero.
@param counts: invoke counts. must be positive or zero.
"""
if not callable(func) or interval < 0 or counts < 0:
raise ParaError
Thread.__init__(self)
self.__func = func
self.__interval = interval
self.__counts = counts
self.__args = args
self.__kwargs = kwargs
self.__finished = Event