在实际应用中,我们经常需要使用定时器去触发一些事件。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 timedef 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

Python的定时器相关推荐

  1. python timer使用-Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  2. Python 线程定时器 Timer - Python零基础入门教程

    目录 一.Python 线程定时器 Timer 原理 二.Python 线程定时器 Timer 使用 三.Python 线程定时器 Timer 总结 四.猜你喜欢 零基础 Python 学习路线推荐 ...

  3. python周期函数_对python周期性定时器的示例详解

    如何实现python的定时器用time.sleep方法.如果要非阻塞的就放在一个单独线程里. 如何调用定时器 python 1 if __name__ == "__main__": ...

  4. python 一次性定时器_python 定时器每天就执行一次的实现代码

    1.实现功能 编写python脚本一直运行,判断当下是否是新的一天,如果是就执行一次任务代码 2.具体实现代码 #-*-coding:utf-8 -*- __author__ = 'Administr ...

  5. python 循环定时器 timer显示数据_【Python】多线程、定时循环爬取优信二手车信息...

    爬虫 爬取优信二手车:循环遍历每页,获取相应的有价值字段信息,这里不详细阐释了. 多线程 Python中,使用concurrent.futures模块下的ThreadPoolExecutor类来实现线 ...

  6. Python之定时器的使用

    python中的定时器的使用: 一.必须引入库: import threading #引入库 二.上代码: #!/usr/bin/python#-*- coding: UTF-8 -*-import ...

  7. python高精度定时器中断_0015 高精度定时器

    0012提过高精度时钟中断,这篇来讲下定时器. 传统操作系统内核一般都有个时间片tick,即相隔一定时间发生一次时钟中断,比如1毫秒,10毫秒,dos时代的1/18.5秒,有高精度时钟之后,我们通过定 ...

  8. python倒计时定时器_使用python修饰器的定时器倒计时

    def countdown(n): while n > 0: return n n -= 1 n -= 1永远不会到达.实际上,while循环只会迭代一次,你的函数只返回n. 您想改为使用yie ...

  9. python实现定时器

    ❤️ 前段时间发现了一个 人工智能学习网站,通俗易懂,风趣幽默,分享一下给大家.

最新文章

  1. vs2015开发c语言 简书,微软符号服务器_NT_SYMBOL_PATH给VS调试带来的隐藏坑
  2. 使用JNA,让java调用原生代码
  3. pandas索引复合索引dataframe数据、索引其中一个水平(level)的所有数据行(index all rows in a level)
  4. ubuntu20安装mysql8.0.28
  5. FPGA中状态机实现需要注意的地方
  6. arduino与DS1302时钟调试失败的分析
  7. mysql数据存储7天_MySQL开启binlog并且保存7天有效数据
  8. [转载] Python字典及基本操作(超级详细)
  9. 从DLL导出.a文件
  10. Android初级教程:对文件和字符串进行MD5加密工具类
  11. 如何用常量代替session_如何用Python代替Visual Basic应用程序并节省了很多时间
  12. HCIE Cloud
  13. C#获取枚举的key-value格式
  14. 2021-10-28项目集管理PgMP:刷新项目管理思维与架构︱项目管理者联盟联合创始人宣晓锋
  15. 揭秘今日头条推荐10万+
  16. 在树莓派(Linux)上使用FTDI的usb转串口芯片ft232两种驱动方式(VCP和D2xx)
  17. JavaScript创始人Brendan Eich访谈录
  18. oim(类QQ)开源项目源码阅读笔记(1)——登录部分
  19. 网址,URL,域名,IP地址,DNS,域名解析(转载)
  20. poj2389 Bull Math (高精度之A*B)

热门文章

  1. 这些屌毛总是给订阅号发x图,连夜肝了一个微信订阅号鉴黄机器人抵御~
  2. 为什么程序员都不喜欢使用switch,而是大量的 if……else if ?
  3. java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.init(Unknown Source)
  4. 07 ORA系列:ORA-01747 或列说明无效 user.table.column, table.column
  5. 【Structs2】struts2单例多例以及spring整合的问题
  6. JSP动作标签useBean--jsp:useBean 创建一个对象
  7. python输出所有素数_Python实现输出某区间范围内全部素数的方法
  8. 深拷贝一个对象会了,怎么深拷贝一个图?
  9. 「万字图文」史上最姨母级Java继承详解
  10. Java连接FTP服务器并且实现对其文件的上传和下载