Python实现定时器的几种方式(超详细)

✨前言:

在Python编程中,定时器是一种非常有用的工具,用于执行特定任务或函数,例如定时任务、轮询操作、定时检查等。Python提供了多种方式来创建和使用定时器,本文将介绍一些高级的定时器使用方式,包括使用threading模块、使用schedule库以及在异步编程中使用定时器。

👉1 使用time.sleep()结合循环

这是最基础的计时方法,通过让程序暂停一定时间来实现简单的定时任务。

#!/usr/bin/env python
# coding=utf-8
"""
# @Time    : 2024/4/26
# @Author  : Summer
# @File    : test
# @describe:
"""

import time


def task():
    print("任务执行中...")


interval = 5  # 间隔5秒

while True:
    task()
    time.sleep(interval)

👉2.使用threading.Timer

threading.Timer是Python标准库threading中的一个类,用于在指定时间后启动一个任务。它主要用于简单的延迟任务执行,适合于不需要复杂调度逻辑的场景。其使用相对简单,但在处理复杂的调度任务时可能会显得力不从心。
常用场景
延迟执行任务:在需要任务延迟一段时间执行时,如启动延迟、简单重试机制等。
单次定时任务:适合于只需要执行一次的定时任务。
常用方法
创建和启动定时器:

import threading

def my_task():
    print("My Task Executing")

timer = threading.Timer(10, my_task)  # 10秒后执行my_task
timer.start()

取消定时器: 如果定时器尚未执行,可以使用cancel()方法取消。

timer.cancel()

👉3 使用sched模块

sched模块是Python自带的一个事件调度模块,它提供了一个通用的方法来定时运行任务。

3.1 enter

enter(delay, priority, action, argument=(), kwargs={})
这个方法用于调度一个事件。事件将会在指定的延迟时间delay后被执行。priority参数用于同一时间到达的两个事件进行排序:具有较小priority值的事件会被先执行。action参数则是当事件被执行时会调用的函数,argument是传递给action的参数组成的元组,kwargs是传递给action的关键字参数组成的字典。
调用enter方法会返回一个事件对象,这个对象可以用于后续取消该事件。

3.2 cancel(evt)

cancel(event)
此方法用于取消一个已经被安排的事件。要取消一个事件,你需要传递给cancel方法之前调用enter方法时返回的事件对象。一旦取消,该事件就不会执行。
如果尝试取消一个不存在或已经执行的事件,则会抛出一个ValueError异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天Aileft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值