我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python实现定时器的方法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python实现定时器的方法有哪些

本篇内容介绍了“python实现定时器的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 使用time,threading 模块

第一种:

代码实现:

# -*- coding:utf-8 -*-import threadingimport timecancel_tmr = Falsedef start():#具体任务执行内容    print("hello world")def heart_beat():# 打印当前时间    print(time.strftime('%Y-%m-%d %H:%M:%S'))    if not cancel_tmr:        start()        # 每隔3秒执行一次        threading.Timer(3, heart_beat).start()if __name__ == '__main__':    heart_beat()    # 15秒后停止定时器    time.sleep(15)    cancel_tmr = True

第二种:

# -*- coding:utf-8 -*-import threadingimport timeexec_count = 0def start():    print("hello world", exec_count)def heart_beat():    print(time.strftime('%Y-%m-%d %H:%M:%S'))    global exec_count    exec_count += 1    # 执行15次后停止定时器    if exec_count < 15:        start()        threading.Timer(5, heart_beat).start()if __name__ == '__main__':    heart_beat()

2. 使用datetime,threading 模块

要求:每天凌晨3点执行func方法。

代码实现:

# -*- coding:utf-8 -*-import datetimeimport threadingdef func():    print("haha")    # 如果需要循环调用,就要添加以下方法    timer = threading.Timer(86400, func)    timer.start()# 获取现在时间now_time = datetime.datetime.now()# 获取明天时间next_time = now_time + datetime.timedelta(days=+1)next_year = next_time.date().yearnext_month = next_time.date().monthnext_day = next_time.date().day# print(next_time, next_year, next_month, next_day)# 获取明天3点时间next_time = datetime.datetime.strptime(str(next_year) + "-" + str(next_month) + "-" + str(next_day) + " 03:00:00", "%Y-%m-%d %H:%M:%S")# print(next_time)# # 获取昨天时间# last_time = now_time + datetime.timedelta(days=-1)# 获取距离明天3点时间,单位为秒timer_start_time = (next_time - now_time).total_seconds()print(timer_start_time)# 54186.75975# 定时器,参数为(多少时间后执行,单位为秒,执行的方法)timer = threading.Timer(timer_start_time, func)timer.start()

3. 使用time,schedule 模块 (执行单个任务)

schedule:一个轻量级的定时任务调度的库。

代码实现:

# !/usr/bin/env python# -*- coding:utf-8 -*-import scheduleimport timedef job(text=""):    print(text, "I'm working...")schedule.every().seconds.do(job, "每秒一次")schedule.every(5).seconds.do(job, "五秒一次")schedule.every(10).minutes.do(job, "10分钟一次")schedule.every().hour.do(job, "1小时一次")# 每天10:30执行schedule.every().day.at("10:30").do(job)# 每隔5到10天执行一次任务 schedule.every(5).to(10).days.do(job)# 每周一的这个时候执行一次任务schedule.every().monday.do(job)# 每周三13:15执行一次任务schedule.every().wednesday.at("13:15").do(job)while True:# run_pending:运行所有可以运行的任务    schedule.run_pending()    time.sleep(1)

4. 使用time,schedule 模块 (执行多个任务)

时间有冲突的执行多个任务

代码实现:

# -*- coding:utf-8 -*-import scheduleimport timedef job():    print("I'm working... in job1  start")    time.sleep(5)    print("I'm working... in job1  end")def job2():    print("I'm working... in job2")schedule.every(3).seconds.do(job)schedule.every(3).seconds.do(job2)while True:    schedule.run_pending()    time.sleep(1)

运行结果:

python实现定时器的方法有哪些

根据代码运行结果可以看出,schedule方法是串行的,代码中有时间冲突,所以执行完第一个任务,才会执行第二个任务,即任务二每隔3秒执行一次,而任务一执行时间是5秒。

如果不用多线程,则定时任务会不准确,因为任务会按照顺序执行,如果上一个任务比较耗时,则下一个任务就会"延误"

多线程并发运行多个任务

代码实现:

# -*- coding:utf-8 -*-import datetimeimport scheduleimport threadingimport timedef job1():    print("I'm working for job1 start", datetime.datetime.now())    time.sleep(5)    print("job1: end", datetime.datetime.now())def job2():    print("I'm working for job2 start", datetime.datetime.now())    time.sleep(3)    print("job2: end", datetime.datetime.now())def job1_task():    threading.Thread(target=job1).start()def job2_task():    threading.Thread(target=job2).start()def run():    schedule.every(3).seconds.do(job1_task)    schedule.every(3).seconds.do(job2_task)    while True:        schedule.run_pending()        time.sleep(1)if __name__ == '__main__':    run()

代码运行结果:

python实现定时器的方法有哪些

5. 使用apscheduler 模块

apscheduler 模块详情介绍

apscheduler 模块详情介绍

代码实现

# -*- coding:utf-8 -*-import timeimport datetimefrom apscheduler.schedulers.blocking import BlockingSchedulerdef my_job(text="默认值"):    print(text, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))sched = BlockingScheduler()sched.add_job(my_job, 'interval', seconds=3, args=['3秒定时'])# 2018-3-17 00:00:00 执行一次,args传递一个text参数sched.add_job(my_job, 'date', run_date=datetime.date(2019, 10, 17), args=['根据年月日定时执行'])# 2018-3-17 13:46:00 执行一次,args传递一个text参数sched.add_job(my_job, 'date', run_date=datetime.datetime(2019, 10, 17, 14, 10, 0), args=['根据年月日时分秒定时执行'])# sched.start()"""interval 间隔调度,参数如下:    weeks (int) – 间隔几周    days (int) – 间隔几天    hours (int) – 间隔几小时    minutes (int) – 间隔几分钟    seconds (int) – 间隔多少秒    start_date (datetime|str) – 开始日期    end_date (datetime|str) – 结束日期    timezone (datetime.tzinfo|str) – 时区""""""cron参数如下:    year (int|str) – 年,4位数字    month (int|str) – 月 (范围1-12)    day (int|str) – 日 (范围1-31)    week (int|str) – 周 (范围1-53)    day_of_week (int|str) – 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)    hour (int|str) – 时 (范围0-23)    minute (int|str) – 分 (范围0-59)    second (int|str) – 秒 (范围0-59)    start_date (datetime|str) – 最早开始日期(包含)    end_date (datetime|str) – 最晚结束时间(包含)    timezone (datetime.tzinfo|str) – 指定时区"""# my_job将会在6,7,8,11,12月的第3个周五的1,2,3点运行sched.add_job(my_job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')# 截止到2018-12-30 00:00:00,每周一到周五早上五点半运行job_functionsched.add_job(my_job, 'cron', day_of_week='mon-fri', hour=5, minute=30, end_date='2018-12-31')# 表示2017年3月22日17时19分07秒执行该程序sched.add_job(my_job, 'cron', year=2017, month=3, day=22, hour=17, minute=19, second=7)# 表示任务在6,7,8,11,12月份的第三个星期五的00:00,01:00,02:00,03:00 执行该程序sched.add_job(my_job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')# 表示从星期一到星期五5:30(AM)直到2014-05-30 00:00:00sched.add_job(my_job, 'cron', day_of_week='mon-fri', hour=5, minute=30, end_date='2014-05-30')# 表示每5秒执行该程序一次,相当于interval 间隔调度中seconds = 5sched.add_job(my_job, 'cron', second='*/5', args=['5秒定时'])sched.start()

“python实现定时器的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python实现定时器的方法有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python实现定时器的方法有哪些

本篇内容介绍了“python实现定时器的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 使用time,threading 模块
2023-07-05

Android实现定时器的方法有哪些

这篇文章将为大家详细讲解有关Android实现定时器的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。正文我用到的几种实现定时器的类:Handler, Timer, Thread, AlarmMa
2023-05-30

Java实现定时器的方法有哪些

在Java中,有多种方式可以实现定时器功能。以下是几种常见的方法:1. Timer类:Java提供了Timer类,可以用来实现简单的定时器功能。可以使用Timer类的schedule()方法来安排任务在指定的时间间隔后执行。2. Sched
2023-08-08

java实现定时器的方式有哪些

Java中实现定时器的方式有以下几种:1. java.util.Timer类和java.util.TimerTask类:Timer类用于调度任务,TimerTask类定义了具体要执行的任务。可以使用Timer类的schedule()方法来安
2023-08-25

Android实现定时任务的方法有哪些

Android实现定时任务的方法有以下几种:使用Handler:可以通过Handler的postDelayed()方法来实现定时任务,通过设置延时时间和要执行的任务,可以实现定时执行任务的功能。使用Timer和TimerTask:可以创建一
2023-10-26

Django定时任务实现方法有哪些

本篇内容介绍了“Django定时任务实现方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 前言为了做一些报表,最近需要每日从爱站
2023-06-04

Android开发中实现定时器功能的方法有哪些

Android开发中实现定时器功能的方法有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、TimerTimer是Android直接启动定时器的类,TimerTask是
2023-05-31

使用Java实现定时任务的方法有哪些

使用Java实现定时任务的方法有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、 sleep这也是我们最常用的 sleep 休眠大法,不只是当作休眠用,我们还可以利用它很
2023-06-08

SpringBoot实现定时发送邮件的方法有哪些

这篇“SpringBoot实现定时发送邮件的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot实现
2023-07-05

Python实现实时显示进度条的方法有哪些

这篇文章主要介绍“Python实现实时显示进度条的方法有哪些”,在日常操作中,相信很多人在Python实现实时显示进度条的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python实现实时显示进度条
2023-06-22

java定时任务实现的方式有哪些

Java中实现定时任务的方式有以下几种:1. Timer类:Java提供了Timer类,可以用来实现简单的定时任务。Timer类允许我们指定一个时间间隔,然后在指定的时间间隔后执行任务。但是Timer类有一些缺点,比如当执行任务的时间超过了
2023-08-29

python实现定时器的5种方法

本文主要介绍了python实现定时器的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-06

java定时任务实现方式有哪些

Java中实现定时任务的方式有以下几种:1. 使用Java内置的Timer类,可以通过调度TimerTask来执行任务。Timer提供了简单的任务调度功能,但是不适用于需要精确控制执行时间的任务。2. 使用Java内置的ScheduledE
2023-08-11

python实现单例的方法有哪些

这篇“python实现单例的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python实现单例的方法有哪些”文章吧
2023-07-05

Java中定时任务的实现方式有哪些

本篇内容主要讲解“Java中定时任务的实现方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中定时任务的实现方式有哪些”吧!1、线程等待实现先从最原始最简单的方式来讲解。可以先创建
2023-06-25

常用Python实现方法有哪些

本篇内容主要讲解“常用Python实现方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“常用Python实现方法有哪些”吧! 1、冒泡排序lis = [56,12,1,8,354,10,1
2023-06-16

python实现多线程的方法有哪些

在Python中,实现多线程的方法有以下几种方式:1. 使用`threading`模块:`threading`模块是Python标准库中提供的多线程实现方式。通过创建`Thread`类的实例,传入要执行的函数作为参数,然后调用`start(
2023-08-15

Java定时器实现的方式有哪几种

Java中实现定时器的方式有以下几种:1. 使用Timer类:Timer类是Java提供的一个定时任务调度器。可以使用Timer类来安排一个任务在未来的某个时间点执行,也可以安排一个任务按照一定的时间间隔重复执行。2. 使用Schedule
2023-10-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录