计时器对象用于特定时间运行的操作。往往被安排到特定的单独的线程上运行,
但是计时器初始化的时间间隔可能不是解释器实际执行操作时的实际时刻,
因为线程调度程序负责实际调度与计时器对象相对应的线程。
Timer是Thread类的子类。显式调用与计时器对应的start()函数来启动。
创建一个定时器语法
threading.Timer(interval,function,args = None,kwargs = None)
经过时间多少秒,后运行程序。如果args为None(默认值),则将使用空列表。如果kwargs为None(默认值),则将使用空的dict。
import threading
def fun():
print("hello\n") timer = threading.Timer(1.0, fun)
timer.start()
print("quit\n")
程序start()运行5秒中后调用fun(),
timer.cancel() 停止计时器,取消执行计时器的操作。这仅在定时器仍处于等待阶段时才有效。
import threading def fun():
print("hello\n") timer = threading.Timer(1.0, fun)
timer.start()
print("Cancelling timer\n")
timer.cancel()
print("Exit\n")
使用threading.Timer实现线程循环任务定时器
import threading
def func1(a):
print('TO DO 。。。')
a+=1
print(a)
print('当前激活线程数为',threading.activeCount())
if a>5:
return
timer = threading.Timer(1, func1,(a,)) #1秒后调func1 不会造成线程堆积
timer.start() timer = threading.Timer(5, func1,(0,)) #5秒后调用func1
timer.start()
运行结果