Python的定时器

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

  • 47
    点赞
  • 168
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
Python中有多种方式实现定时器,其中包括使用线程实现的定时器和使用time、schedule模块实现的定时器。 第一种方式是使用线程实现的定时器。可以通过创建一个定时器对象,设置定时时间和要执行的函数,然后启动定时器定时器会在指定的时间间隔内循环执行函数。 第二种方式是使用time和datetime模块实现的定时器。可以通过获取当前时间,计算下一次执行的时间,然后使用线程定时器在指定的时间间隔内执行函数。 第三种方式是使用schedule模块实现的定时器。schedule是一个轻量级的定时任务调度库,可以通过设置定时任务的时间间隔和要执行的函数,来实现定时任务的执行。 根据具体的需求,可以选择适合的方式来实现Python定时器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python面向对象的编程思想(五):定时器](https://blog.csdn.net/zj51351515/article/details/122442332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python实现定时器](https://blog.csdn.net/weixin_45459224/article/details/102600181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值