详解Python的多线程定时器threading.Timer

作者:mb5fe5608dce902 时间:2023-04-07 03:33:43 

threading.Timer

一次timer只生效一次,不会反复循环,如果实现循环触发,代码如下:

import time
import threading
def createTimer():
   t = threading.Timer(2, repeat)
   t.start()
def repeat():
   print('Now:', time.strftime('%H:%M:%S',time.localtime()))
   createTimer()
createTimer()

这段代码的功能就是每2秒打印出当前的时间,即一个2秒的定时器。运行效果如下:

E:\py>python timer.py
Now: 16:36:15
Now: 16:36:17
Now: 16:36:19
Now: 16:36:21
Now: 16:36:23
Now: 16:36:25
Now: 16:36:27

cancel函数,可以在定时器被触发前,取消这个Timer。

允许多个定时任务,并发执行,互不干扰。

如果想更精确地控制定时器函数的触发时间,就需要把下一次定时器触发的代码,放在定时器执行代码最开始的地方,如下:

import time
import threading
def createTimer():
   t = threading.Timer(2, repeat)
   t.start()
def repeat():
   createTimer()
   print('Now-1:', time.strftime('%H:%M:%S',time.localtime()))
   time.sleep(3)
   print('Now-2:', time.strftime('%H:%M:%S',time.localtime()))
createTimer()

定时器repeat要执行至少3秒,但是2秒后,下一个定时器就会被触发,这是允许的!上面这段代码的执行效果如下:

E:\py>python timer.py
Now-1: 16:46:12
Now-1: 16:46:14
Now-2: 16:46:15
Now-1: 16:46:16
Now-2: 16:46:17
Now-1: 16:46:18
Now-2: 16:46:19
Now-1: 16:46:20
Now-2: 16:46:21
Now-1: 16:46:22
Now-2: 16:46:23

从打印信息来分析,同时存在多个repeat函数的执行序列是没问题的,这种情况下,还需要认真考虑定时器函数的可重入问题!

来源:https://blog.51cto.com/u_15067267/3837295

标签:Python,多线程,定时器
0
投稿

猜你喜欢

  • Python原始字符串(raw strings)用法实例

    2021-05-04 18:29:27
  • C#将图片存放到SQL SERVER数据库中的方法

    2024-01-17 14:44:30
  • asp更改Windows2000管理者密码?

    2010-06-26 11:03:00
  • 基于Python实现超级玛丽游戏的示例代码

    2022-02-14 16:48:00
  • python numpy实现rolling滚动案例

    2023-08-24 17:12:45
  • python把1变成01的步骤总结

    2021-10-25 05:28:47
  • php5.4以下版本json不支持不转义内容中文的解决方法

    2023-07-02 17:10:45
  • Python群发邮件实例代码

    2021-05-05 18:42:35
  • ORACLE数据库事务隔离级别介绍

    2012-10-07 10:43:36
  • msxml3.dll 错误解决办法

    2009-05-25 18:02:00
  • PHP邮箱验证示例教程

    2023-06-20 12:01:47
  • oracle 字符串转成行

    2009-06-19 17:38:00
  • Python爬虫获取op.gg英雄联盟英雄对位胜率的源码

    2024-01-02 13:03:52
  • Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    2022-03-10 21:04:56
  • pycharm实现猜数游戏

    2023-01-14 19:04:49
  • 解决python中os.system调用exe文件的问题

    2023-11-29 14:46:13
  • python笔记(2)

    2021-10-16 21:50:00
  • Windows下使用性能监视器监控SqlServer的常见指标

    2024-01-26 17:52:44
  • Python面向对象之内置函数相关知识总结

    2022-06-05 10:30:24
  • Python文件及目录操作实例详解

    2023-11-26 12:50:27
  • asp之家 网络编程 m.aspxhome.com