Python中的定时器用法:Timer定时器和schedule库

这篇具有很好参考价值的文章主要介绍了Python中的定时器用法:Timer定时器和schedule库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、引言

二、Timer定时器

1、Timer定时器的原理

2、Timer定时器的使用方法

3、Timer定时器的实际应用案例

三、schedule库

1、schedule库的原理

2、schedule库的使用方法

3、schedule库的实际应用案例

四、Timer定时器和schedule库的比较

1、功能差异

2、适用场景

五、实际应用案例

六、总结


一、引言

在Python中,定时器是一种常用的工具,用于在指定的时间间隔内执行特定的任务。Timer定时器和schedule库是Python中两种常用的定时器实现方式。本文将分别介绍它们的原理、使用方法和实际应用案例。

Python中的定时器用法:Timer定时器和schedule库,关于python那些事儿,网络

二、Timer定时器

1、Timer定时器的原理

Timer定时器是一种基于线程的定时器,它通过在指定的时间间隔内启动一个线程来执行特定的任务。当时间间隔到达时,线程将自动执行任务,并在任务完成后自动退出。

2、Timer定时器的使用方法

使用Timer定时器需要先导入threading模块,然后创建一个Timer对象,指定要执行的任务和时间间隔。下面是一个简单的示例:

import threading  
  
def my_task():  
    print("Task executed!")  
  
timer = threading.Timer(10.0, my_task)  # 创建一个10秒后执行的Timer对象  
timer.start()  # 启动Timer对象

在这个示例中,我们首先定义了一个名为my_task的函数,它将在Timer对象执行时被调用。然后,我们创建了一个10秒后执行的Timer对象,并调用start()方法启动它。当10秒时间间隔到达时,my_task函数将被自动执行。

3、Timer定时器的实际应用案例

Timer定时器在实际应用中可以用于各种场景,例如:

定时发送邮件:可以在特定的时间间隔内发送邮件提醒。
定时备份数据:可以在每天固定的时间点备份数据库数据。
定时执行清理任务:可以在每天晚上固定时间清理临时文件。

三、schedule库

1、schedule库的原理

schedule库是一种基于时间的任务调度库,它可以根据指定的时间间隔和时间点来执行特定的任务。与Timer定时器不同的是,schedule库支持同时执行多个任务,并且可以根据任务的优先级进行调度。

2、schedule库的使用方法

使用schedule库需要先安装它(可以使用pip install schedule命令进行安装),然后定义要执行的任务和时间间隔。下面是一个简单的示例:

import schedule  
import time  
  
def my_task():  
    print("Task executed!")  
  
schedule.every(10.0).seconds.do(my_task)  # 每10秒执行一次my_task函数  
while True:  
    schedule.run_pending()  # 运行待执行的任务队列  
    time.sleep(1)  # 暂停1秒钟,等待下一个任务执行

在这个示例中,我们首先定义了一个名为my_task的函数,它将在schedule库执行时被调用。然后,我们使用schedule.every(10.0).seconds.do(my_task)语句指定每10秒执行一次my_task函数。最后,我们使用一个无限循环来运行待执行的任务队列,并使用time.sleep(1)语句暂停1秒钟,等待下一个任务执行。

3、schedule库的实际应用案例

schedule库在实际应用中可以用于各种场景,例如:

定时发送新闻推送:可以根据用户的订阅时间设置定时推送新闻消息。
定时发送提醒通知:可以根据用户的设置时间设置定时发送提醒通知。
定时清理缓存:可以根据缓存的大小和过期时间设置定时清理缓存的任务。

四、Timer定时器和schedule库的比较

1、功能差异

Timer定时器和schedule库在功能上存在一些差异。Timer定时器是基于线程的,可以指定任务执行的延迟时间,但它不支持多个任务的并行执行,也不支持任务的周期性执行。而schedule库则支持多个任务的并行执行和周期性执行,并且可以根据任务的优先级进行调度。

2、适用场景

Timer定时器适用于需要一次性延迟执行任务的场景,例如定时发送邮件、定时备份数据等。而schedule库则适用于需要周期性执行任务的场景,例如定时发送新闻推送、定时发送提醒通知等。

五、实际应用案例

下面是一个使用Timer定时器和schedule库实现定时发送邮件的示例:

import smtplib  
from email.mime.text import MIMEText  
import threading  
import time  
import schedule  
  
def send_email():  
    # 发送邮件的代码  
    sender = "your_email@example.com"  
    receiver = "recipient_email@example.com"  
    message = MIMEText("Hello, this is a timer email!")  
    message["Subject"] = "Timer Email"  
    message["From"] = sender  
    message["To"] = receiver  
    smtp_server = "smtp.example.com"  
    smtp_port = 587  
    smtp_username = "your_username"  
    smtp_password = "your_password"  
    with smtplib.SMTP(smtp_server, smtp_port) as server:  
        server.starttls()  
        server.login(smtp_username, smtp_password)  
        server.sendmail(sender, receiver, message.as_string())  
  
# 使用Timer定时器发送邮件  
timer = threading.Timer(3600.0, send_email)  # 创建一个1小时后执行的Timer对象  
timer.start()  # 启动Timer对象  
  
# 使用schedule库定时发送邮件  
schedule.every(86400).seconds.do(send_email)  # 每天执行一次send_email函数  
while True:  
    schedule.run_pending()  # 运行待执行的任务队列  
    time.sleep(60)  # 暂停60秒钟,等待下一个任务执行

在这个示例中,我们定义了一个名为send_email的函数,用于发送邮件。然后,我们分别使用Timer定时器和schedule库创建了两个定时任务,一个是在1小时后执行send_email函数,另一个是每天执行一次send_email函数。这样,我们就实现了定时发送邮件的功能。

六、总结

通过本文的介绍,我们了解了Python中Timer定时器和schedule库的原理、使用方法和实际应用案例。Timer定时器适用于一次性延迟执行任务的场景,而schedule库适用于周期性执行任务的场景。它们可以帮助我们在Python程序中实现定时任务的执行,提高程序的效率和自动化程度。在未来的发展中,我们可以期待Python的定时器功能更加强大和灵活,以满足更多复杂任务的需求。文章来源地址https://www.toymoban.com/news/detail-794003.html

到了这里,关于Python中的定时器用法:Timer定时器和schedule库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MSP432---Timer_A定时器详解

    msp432数据手册slau356h.pdf,P782 目录 1. 时钟源选择和分频器 2. 定时器A工作(计数)模式  2.1 停止模式  2.2 增计数模式  2.3 连续计数模式  2.4 增减计数模式 3. 捕获/比较模块  3.1 捕获模式 3.2 比较模式  4. 中断 5. Timer_A寄存器 6. 软件实例 MSP432单片机定时器模块 有:看门狗定时

    2024年02月16日
    浏览(44)
  • @Scheduled定时器 定时任务调度:Unexpected error occurred in scheduled task错误

    目录 一、基本使用 二、参数详解 1. @Scheduled(fixedDelay = 5000) 2. @Scheduled(fixedRate = 5000) 3. @Scheduled(cron = “0 0 2 * * ?”) 4.cron表达式 案例 配置文件 写配置的时候,没有提示,解决方案 三、@Scheduled注意事项 四、 @Scheduled 的执行原理  1、加载使用 @Scheduled 注解的类及方法  2、解析

    2024年02月16日
    浏览(44)
  • TM4C123系列(五)————timer定时器(timer模式)

    一.实验简介 通过定时器的timer模式来计时实现以1s为间隔将LED翻转。 二.板载定时器介绍 TM4C有两种定时器,一种为16/32bit的,一种是32/64bit的,两种定时器各有六个,对于每个定时器来说,它可以单独以较大的bit位作为一个定时器工作,也可以拆分为两个较小的bit位的定时器

    2024年02月15日
    浏览(32)
  • Java定时器 @Scheduled注解的使用

    @Scheduled注解可以用于做定时任务,再方法上加上@Scheduled注解,可以将这个方法定义为一个任务发放,可以搭配cron表达式进行任务的控制。 开启定时任务时在类上加注解 @EnableScheduling 1.按顺序依次为 秒 分 时 天 月 周 年 表达式长度为6个或者7个 cron表达式是一个字符串,分为

    2024年02月04日
    浏览(39)
  • 物联网操作系统-软件定时器(software timer)

    软件定时器就是\\\"闹钟\\\",你可以设置闹钟, ⚫ 在 30 分钟后让你起床工作 ⚫ 每隔 1 小时让你例行检查机器运行情况 软件定时器也可以完成两类事情: ⚫ 在\\\"未来\\\"某个时间点,运行函数 ⚫ 周期性地运行函数 日常生活中我们可以定无数个\\\"闹钟\\\",这无数的\\\"闹钟\\\"要基于一个真实

    2024年02月21日
    浏览(37)
  • 【Java|多线程与高并发】定时器(Timer)详解

    在Java中,定时器 Timer 类是用于执行定时任务的工具类。它允许你安排一个任务在未来的某个时间点执行,或者以固定的时间间隔重复执行。 在服务器开发中,客户端向服务器发送请求,然后等待服务器响应. 但服务器什么时候返回响应,并不确定. 但也不能让客户端一直等下去

    2024年02月07日
    浏览(39)
  • C#里面的三种定时计时器:Timer

    在.NET中有三种计时器: 1、System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet。Timer控件只有绑定了Tick事件和设置Enabled=True后才会自动计时,停止计时可以用Stop()方法控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它所在的

    2024年02月07日
    浏览(32)
  • RT-Thread 15. list_timer与软定时器

    1. 代码 2. list_timer结果 3. 解释 0x0000012c: 300个时钟周期,即处于rt_thread_mdelay(3000); 0x00000032: 50个时钟周期,即处于rt_thread_mdelay(500); 4.增加软定时器 //usrtimer.c 5. MSH命令开启软件定时器 timer_static_sample()会执行,timer1和timer2会开始工作。输入list_timer,发现多了timer1、timer2

    2024年01月19日
    浏览(35)
  • [STC32F12K54入门第二步]Timer定时器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC32F和STC32G的定时器都是16位的。而且寄存器地址是一样的,程序也是通用的。寄存器地址我也不讲了,想知道的自己查数据手册或者看我写的STC32G12K128的定时器内容。 Timer.h Timer.c 100ms让P21的LED灯电平变

    2024年02月11日
    浏览(41)
  • STM32 HAL库 Timer(定时器)+DMA输出PWM底层配置过程学习

    本文使用的芯片型号是STM32G030,写本文的目前是想记录学习下Timer借助DMA生成可变占空比PWM时的底层配置过程。 使用TIM1,配置就只改了图上的配置,系统时钟用的16M,分频选择15(16-1),自动重装载寄存器ARR选择999(1000-1),那么生成的就是1kHz的PWM,这里为什么要减1,因为这俩是

    2024年04月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包