python中的定时器 ——Threading.timer

python中的定时器 ——Threading.timer

1、定时器是软件里常用的模块,用于定期执行任务,单次执行定时器

#定时器执行的函数
def func():
    print('执行函数时间:{}'.format(standar_time()))
    time.sleep(3)
    print('休息三秒时间:{}'.format(standar_time()))
    print('hello,word!')
    print('函数结束时间:{}'.format(standar_time()))

#计算并打印出当前时间的标准格式
def standar_time():
    timestamp1 = time.time()
    cur_time = datetime.fromtimestamp(timestamp1)
    return cur_time

#定时器的延时时间,2s
delay = 2
#创建定时器对象
timer = threading.Timer(delay,func)
#启动定时器
timer.start()
print('定时启动时间:{}'.format(standar_time()))

运行后输出结果:

定时启动时间:2024-04-19 09:21:39.460646
执行函数时间:2024-04-19 09:21:41.472267
休息三秒时间:2024-04-19 09:21:44.486207
hello,word!
函数结束时间:2024-04-19 09:21:44.486207

从输出时间来看,定时器启动是39秒,执行func函数是41秒,中间是定时器设置的启动延迟时间delay为2秒。上面的两行代码实现一次定时,即start()执行后,过delay秒执行timerHandler函数。

2、循环重复执行定时器,通常是在软件中最常用的方式

#定时器执行的函数
def func():
    time.sleep(3)
    print('hello,word!')

#计算并打印出当前时间的标准格式
def standar_time():
    timestamp1 = time.time()
    cur_time = datetime.fromtimestamp(timestamp1)
    return cur_time

def Timers(delay):
    #要执行的代码体
    func()
    print('fun函数执行时间:{}'.format(standar_time()))
    #代码体按顺序执行后,重新启动一个定时器,调用函数自身
    timer = threading.Timer(delay,Timers,args=[delay])
    timer.start()
    
#单独创建一个定时器,用于首次执行
delay = 1
timer = threading.Timer(delay,Timers,args=[delay])
timer.start()

输出内容:

hello,word!
fun函数执行时间:2024-04-19 09:33:03.278519
hello,word!
fun函数执行时间:2024-04-19 09:33:07.296772
hello,word!
fun函数执行时间:2024-04-19 09:33:11.318020
hello,word!
fun函数执行时间:2024-04-19 09:33:15.335278
hello,word!
fun函数执行时间:2024-04-19 09:33:19.346552
hello,word!
fun函数执行时间:2024-04-19 09:33:23.366803
........

两个执行完成func函数,每次间隔4秒,1秒用于定时器启动后延迟时间的设定,3秒用于执行func整个函数所需时间。将定时器每次需要重复循环执行的代码块放置到下一次定时器启动的上面,就完成了定时循环重复执行的效果。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值