Python寒假高级培训第五课——多线程(三)
2022/1/10 12:33:47
本文主要是介绍Python寒假高级培训第五课——多线程(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、定时器
在需要控制线程的启动,程序的运行,具有周期操作的特点,这种时候使用定时器最好不过了
用法:
class threading.Timer(interval, function, args=[], kwargs={})
创建一个timer,在interval秒过去之后,它将以参数args和关键字参数kwargs运行function 。
调用该函数回返回一个定时器的句柄,同时也获得了一个定时器实例。
但是这时,定时器只是被创建,被没有启动,需要调用实例里面的
start()方法启动定时器。如果在定时过程中想要取消该定时器,需要使用cancel()函数。
示例:
def done(): print("hello") if __name__ == '__main__': #1秒后执行done() t1 = threading.Timer(1, done) t1.start()
但是定时器只执行了一次,如何要定时器,能够不停的执行下去呢?
一种方法是利用while(True),不停的创建定时器并启动,显然这种方法显得笨拙,而且会一直占用线程。
例如:
def done(): print("hello") if __name__ == '__main__': #1秒后执行done() while True: t1 = threading.Timer(1, done) t1.start()
另外一种方法,就是在回调函数中,创建定时器并启动,形成递归调用
def done(): print("hello") timer=threading.Timer(1, done) timer.start() if __name__ == '__main__': #1秒后执行done() t1 = threading.Timer(1, done) t1.start()
结果:
程序看起来很简单,通过在回调函数里面,重新创建定时器,来使得定时器能够一直工作。
但是值得注意的是,定时器的句柄需要定义成为一个全局变量,这样做的好处是,创建的定时器进程和实例不会堆积,而是覆盖,避免不必要的内存占用。
这篇关于Python寒假高级培训第五课——多线程(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型