详解Python定时器Timer的使用及示例
作者:说酒话的猫 发布时间:2021-01-25 23:54:34
1.定时器
Timer定时器源码实现,和自定义一个线程方式一样,都是继承Thread类,重写了run()方法,只是实现的功能是延时执行一个函数或方法。
(1)线程定时器(Timer)解释:
Timer类是Thread的子类,只加入了时间延迟功能。
Thread和Timer对象都用start()方法启动。
启动Timer后,等于单独启动一个线程,为非阻塞的。
(2)Timer 的两种用法:
正常用法:启动后,延时执行函数或方法。
特殊用法:每隔n秒,执行一次函数或方法,就是不断地启动定时器。
2.队列
queue.Queue( ):先入先出。
queue.LifoQueue( ):后入先出。
queue.PriorityQueue() :可设置优先级。
Queue.put():往队列放数据。
Qveue .get():从队列取数据。
Quewe.task.done():配合get使用,告诉队列本次完成。
Queue.qsize():获取数据的数量。
Queue.full()/empty():判满/空。
Queue.join():等待线程完成。
3.线程池:
线程池在系统启动时即创建大量空闲的线程,程序只要将一个函数提交给线程池,线程池就会启动一个空闲的线程来执行它。当该函数执行结束后,该线程并不会死亡,而是再次返回到线程池中变成空闲状态,等待执行下一个函数。
使用线程池可以有效地控制系统中并发线程的数量。当系统中包含有大量的并发线程时,会导致系统性能急剧下降,甚至导致Python解释器崩溃,而线程池的最大线程数参数可以控制系统中并发线程的数量不超过此数,从而节省线程创建和销毁的开销,能带来更好的性能和系统稳定性。
4.案例
使用定时器实现当前时间每秒循环输出一次。
Timer:
import threading
import time
# run函数
def run():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 输出当地时间
timer = threading.Timer(1, run) # 设置一个定时器,循环输出时间
timer.start() # 启动线程
run()
运行结果:
2022-01-22 20:22:15
2022-01-22 20:22:16
2022-01-22 20:22:17
2022-01-22 20:22:18
2022-01-22 20:22:19
2022-01-22 20:22:20
2022-01-22 20:22:21
2022-01-22 20:22:22
2022-01-22 20:22:23
2022-01-22 20:22:24
2022-01-22 20:22:25
······
来源:https://blog.csdn.net/W_000/article/details/122642937
猜你喜欢
- grid()函数概述grid()函数用于设置绘图区网格线。grid()的函数签名为matplotlib.pyplot.grid(b=None
- PHP children() 函数实例查找 note 节点的子节点:<?php $note=<<<XML<no
- ADB是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。ADB主要功能有:
- 一、MatplotlibMatplotlib是Python中众多数据可视化库的鼻祖,其设计风格与20世纪80年代设计的商业化程序语言MATL
- 在网络可靠性中,一种较为经典且在实践中更为常用的可靠度计算便是二终端可靠度,即给定网络拓扑结构与边可靠度(假定节点完全可靠),计算网络中指定
- 作用域链(Scope Chain)JavaScript中的一种重要机制,JS中所有的标识符(Identifier)都是通过Scope Cha
- 具体代码如下所示:# 时间的替换import time,datetimetoday = datetime.datetime.today()p
- 写完“无序列表”和“有序列表”之后已经有人和我说这两篇看得没什么意思。这两篇文章如果只以单向读取的形式阅读那么的确是没什么意思,但是这两篇重
- 思路:使用socket传输文件过程中,如果单次传输每次只能发送一部分数据,如果针对大文件,一次传输肯定是不行的,所以需要我们在传输的时候提前
- 一 、python模块 xml.dom 解析XML的APIminidom.parse(filename)加载读取XML文件doc.docum
- (1)使用python生成pdf文档需要的最基本的包是pdfgen。它属于reportlab模块,而reportlab模块并没有默认集成到p
- 做一个总结,把自己这些年的从业经历和观感罗列一下,某些话可能触及到个人神经,但它们没有恶意。设计师喜欢把世界想象得很美好,社会很和谐,但是这
- 摘要:在学习与科研中,经常会遇到一些数学运算问题,使用计算机完成运算具有速度快和准确性高的优势。Python的Numpy包具有强大的科学运算
- 1、问题描述某厂生产甲乙两种饮料,每百箱甲饮料需用原料6千克、工人10名,获利10万元;每百箱乙饮料需用原料5千克、工人20名,获利9万元。
- 这个函数用于储存图片,将数组保存为图像此功能仅在安装了Python Imaging Library(PIL)时可用。版本也比较老了,新的替代
- 利用python 写一些网络服务的时候,当网络状况不好,或者资源占用过多,任务拥塞的情况下,总会抛出一些异常,当前任务就被终止了,可以很好的
- 爬取流程(美食区最热标签下的三个视频)在首页获取视频的编号和名字拼接成正确的url保存视频思路1.从网页中获取视频的url发现视频的url在
- 今天刷《剑指offer》的时候碰到这样一道题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵
- 问题你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列解决方案最简单的过滤序列元素的方法就是使用列表推导。比如:>>
- 在python中有不少对于集合迭代的方法,我们把程序运行后的再一次循环叫做迭代,每一次都循环都可以看做是一次迭代。那么在迭代结束后,我们需要