文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python的定时器

2023-01-31 05:21

关注
       在实际应用中,我们经常需要使用定时器去触发一些事件。Python中通过线程实现定时器timer,其使用非常简单。看示例:
import threading

def fun_timer():
print('Hello Timer!')

timer = threading.Timer(1, fun_timer)
timer.start()
输出结果:
Hello Timer!
Process finished with exit code 0
注意,只输出了一次,程序就结束了,显然不是我们想要的结果。看Timer类中的解释性描述:
"""Call a function after a specified number of seconds"""
一段时间后调用一个函数,但并没有说要循环调用该函数。因此,修改如下:
def fun_timer():
print('Hello Timer!')
global timer
timer = threading.Timer(5.5, fun_timer)
timer.start()

timer = threading.Timer(1, fun_timer)
timer.start()
输出结果:
Hello Timer!
Hello Timer!
Hello Timer!
Hello Timer!
............
定时器工作正常。

在使用Python定时器时需要注意如下4个方面:
(1)定时器构造函数主要有2个参数,第一个参数为时间,第二个参数为函数名,第一个参数表示多长时间后调用后面第二个参数指明的函数。第二个参数注意是函数对象,进行参数传递,用函数名(如fun_timer)表示该对象,不能写成函数执行语句fun_timer(),不然会报错。用type查看下,可以看出两者的区别。
print(type(fun_timer()))
print(type(fun_timer))
输出结果:
Hello Timer!
<class 'NoneType'>
<class 'function'>
(2)必须在定时器执行函数内部重复构造定时器,因为定时器构造后只执行1次,必须循环调用。
(3)定时器间隔单位是秒,可以是浮点数,如5.5,0.02等,在执行函数fun_timer内部和外部中给的值可以不同。如上例中第一次执行fun_timer是1秒后,后面的都是5.5秒后执行。
(4)可以使用cancel停止定时器的工作,如下例:
# -*- coding: utf-8 -*-
import threading
import time
def fun_timer():
print('Hello Timer!')
global timer
timer = threading.Timer(5.5, fun_timer)
timer.start()

timer = threading.Timer(1, fun_timer)
timer.start()

time.sleep(15) # 15秒后停止定时器
timer.cancel()
输出结果:
Hello Timer!
Hello Timer!
Hello Timer!
Process finished with exit code 0

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯