python 线程之四:定时器(Timer),非阻塞

线程之一讲了线程,如果不熟悉,可以点击【线程之一:线程的创建、启动及运行方式

1、定时器实质:

Timer 定时器源码实现,和我们自定义一个线程方式一样,都是继承了 Thread 类,重写了 run() 方法,只是实现的功能是,延时执行一个函数或方法。

2、线程定时器(Timer)解释:

  • Timer类是Thread的子类,只加入了时间延迟功能
  • Thread 和 Timer 对象都用 start() 方法启动
  • 启动Timer后,等于单独启动一个线程,为非阻塞的
通过源码看出 Timer 类继承了 Thread 类
class Timer(Thread):

 Timer 类的构造函数是这样的,下面做以下参数说明
def __init__(self, interval, function, args=None, kwargs=None):
# 定时器启动后,经过interval秒后,启动function函数,
# function函数的参数是 args 形式或 kwargs 形式

interval:时间(秒)
function:函数名
args:function的参数,元组形式
kwargs:function的参数,字典形式

3、Thread 和 Timer 的实例化对比:

Timer 和 Thread 最根本不同是,加入了一个时间参数(interval),如下:

# 线程的定义及启动
from threading import Thread
def work():
    print('工作中')
t = Thread(target=work)  # 启动后,立即执行 work 函数
t.start()
# 打印返回:工作中

# 定时器的定义及启动
from threading import Timer
def work():
    print('工作中')
t = Timer(2, work)  # 启动后,等待2秒,再执行work 函数
t.start()
# 打印返回:工作中

4、Timer 的两种用法

正常用法:启动后,延时执行函数或方法


特殊用法:每隔 2 秒,执行一次函数或方法,就是不断地启动定时器


喜欢关注、点赞哦

原文链接:,转发请注明来源!