Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python定时任务实现方式

Python定时任务实现方式

作者头像
菲宇
发布于 2019-06-13 07:16:09
发布于 2019-06-13 07:16:09
2.1K00
代码可运行
举报
文章被收录于专栏:菲宇菲宇
运行总次数:0
代码可运行

Python下实现定时任务的方式有很多种方式。

一、循环sleep:

 最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def timer(n):  
    ''''' 
    每n秒执行一次 
    '''  
    while True:    
        print(time.strftime('%Y-%m-%d %X',time.localtime()))    
        yourTask()  # 此处为要执行的任务    
        time.sleep(n)   

二、threading的Timer:

 例如:5秒后执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def printHello():  
    print("start" )
  
Timer(5, printHello).start()  

 例如:间隔5秒执行一次

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def printHello():  
    print("start" )
    timer = threading.Timer(5,printHello)
    timer.start()
  
if __name__ == "__main__":  
    printHello()  

例如:两种方式组合用,5秒钟后执行,并且之后间隔5秒执行一次

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def printHello():  
    print("start")  
    timer = threading.Timer(5,printHello)
    timer.start()
  
if __name__ == "__main__":  
    timer = threading.Timer(5,printHello)
    timer.start()

三、sched模块:

 sched是一种调度(延时处理机制)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time  
import os  
import sched   
  
# 初始化sched模块的scheduler类  
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。  
schedule = sched.scheduler(time.time, time.sleep)   
# 被周期性调度触发的函数  
def execute_command(cmd, inc):  
    print('执行主程序')
    
    ''''' 
    终端上显示当前计算机的连接情况 
    '''  
    os.system(cmd)  
    schedule.enter(inc, 0, execute_command, (cmd, inc))      
def main(cmd, inc=60):  
    # enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数,  
    # 给该触发函数的参数(tuple形式)  
    schedule.enter(0, 0, execute_command, (cmd, inc))  
    schedule.run()  
  
# 每60秒查看下网络连接情况  
if __name__ == '__main__':  
    main("netstat -an", 60)  

四、定时框架APScheduler:

 APScheduler是基于Quartz的一个Python定时任务框架。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。

 需要先安装apscheduler库,cmd窗口命令:pip install apscheduler

 简单的间隔时间调度代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from datetime import datetime
import time
import os
from apscheduler.schedulers.background import BackgroundScheduler

def tick():
    print('Tick! The time is: %s' % datetime.now())

if __name__ == '__main__':
    scheduler = BackgroundScheduler()
    # 间隔3秒钟执行一次
    scheduler.add_job(tick, 'interval', seconds=3)
    # 这里的调度任务是独立的一个线程
    scheduler.start()
    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
    try:
        # 其他任务是独立的线程执行
        while True:
            time.sleep(2)
            print('sleep!')
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()
        print('Exit The Job!')

五、定时框架Celery:

 非常强大的分布式任务调度框架;  需要先安装Celery库,cmd窗口命令: pip install Celery

六、定时框架RQ:

 基于Redis的作业队列工具,优先选择APScheduler定时框架;

七、使用windows的定时任务:

 可以将所需要的Python程序打包成exe文件,然后在windows下设置定时执行。

八、Linux的定时任务(Crontab):

  在Linux下可以很方便的借助Crontab来设置和运行定时任务。进入Crontab文件编辑页面,设置时间间隔,使用一些shell命令来运行bash脚本或者是Python脚本,保存后Linux会自动按照设定的时间来定时运行程序。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年05月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 实现定时任务的九种方案
在现代软件开发中,定时任务(Cron Jobs)是确保应用程序按时执行某些操作的重要组成部分。本文将介绍九种在 Python 中实现后台服务定时任务的方案,帮助开发者选择适合自己需求的方法。
Michel_Rolle
2024/09/27
2.8K0
Python 实现定时任务的八种方案!
来源:https://www.biaodianfu.com/python-schedule.html
Python编程与实战
2021/10/12
34.3K0
Python 定时任务的实现方式
目前所在的项目组需要经常执行一些定时任务,之前都是用 Node.JS 的 cron来实现 schedule job。可是这次需要连接不同的 DB,而且实现的逻辑也有些许不同,于是选择使用 Python 的定时器。
李振
2021/11/26
1.6K0
Python 定时任务的实现方式
解密python实现定时任务的8种方式
定时任务是编程中常见的需求,它可以按照预定的时间表执行特定的任务或操作。在Python中,有多种方法可以实现定时任务。
雷子
2023/12/20
8680
解密python实现定时任务的8种方式
Python实现定时任务的几种方法
该方法能够执行固定间隔时间的任务,时间间隔由time.sleep()的睡眠时间指定。
Steve Wang
2021/12/20
3.9K0
Python定时任务
1、第一种办法是最简单又最暴力。那就是在一个死循环中,使用线程睡眠函数 sleep()。
周小董
2019/03/25
5.8K0
Python定时任务
Python3-定时任务四种实现方式
老猫最近做一个小程序开发任务,主要负责后台部分开发;根据项目需求老猫需要实现三个定时任务:
py3study
2020/01/06
2.3K0
Python定时任务神器-APScheduler
但是这些定时任务库都只是提供了简答的,或者只支持静态的定时任务。而对于需要复杂定时功能,或者动态注册定时任务的场景,则无法满足。
上帝De助手
2019/09/17
3.1K0
Python定时计划任务探究,如何实现到点运行py任务脚本
不少大佬哥应该有着这样一个应用场景,即到点跪舔女神,给女大佬问好,带早餐,备胎计划??而在实际网络中,也有着不少定时定点计划任务需要运行,这在运维当中非常常见,也非常重要!身为技术渣想要实现到点运行py任务脚本,比如说每天某个时间点准时运行爬取91新片以及精彩评论,兴趣让渣渣有研究的动力,这就有了下面这篇水文!!
二爷
2021/10/11
2.1K0
Python设置定时任务
如果需要用Python实现定时任务,包括多长时间之后执行、每隔多久循环执行、每天的几点执行等,都算定时任务。实现定时任务的方法很多,python自身的库也有多种方式可以实现。其中最简单好用的一个库我感觉是threading库中的Timer。
Cloudox
2021/11/23
2.4K0
八种用Python实现定时执行任务的方案,一定有你用得到的!
我们在日常工作中,常常会用到需要周期性执行的任务。 一种方式是采用 Linux 系统自带的 crond 结合命令行实现; 一种方式是直接使用Python; 于是我把常见的Python定时任务实现方法整理了一下,希望对大家有所帮助。
全栈程序员站长
2022/09/07
3K0
八种用Python实现定时执行任务的方案,一定有你用得到的!
Python3优雅操作-时间处理与定时任务
无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务
一墨编程学习
2018/12/24
7990
Python定时任务(上)
在项目中,我们可能遇到有定时任务的需求。其一:定时执行任务。例如每天早上 8 点定时推送早报。其二:每隔一个时间段就执行任务。比如:每隔一个小时提醒自己起来走动走动,避免长时间坐着。今天,我跟大家分享下 Python 定时任务的实现方法。
猴哥yuri
2018/08/16
1.7K0
Python基于APScheduler实现定时任务
Python这个语言的优势就在于有丰富的第三方库,既然原生实现有这样那样的缺点,我们可以借助第三方库来实现定时任务。
Steve Wang
2021/12/20
2.6K0
太好用了!Python 定时任务调度框架 APScheduler 详解!
我们在工作过程中,可能会遇到有定时任务的需求。大部分定时任务偏向 数据采集、消息提醒、邮件自动发送、数据指标统计 等场景。
Python兴趣圈
2023/12/11
7.1K0
太好用了!Python 定时任务调度框架 APScheduler 详解!
python定时任务最强框架APScheduler详细教程
上次测试女神听了我的建议,已经做好了要给项目添加定时任务的决定了。但是之前提供的四种方式中,她不知道具体选择哪一个。为了和女神更近一步,我把我入行近10年收藏的干货免费拿出来分享给女神,希望女神凌晨2点再找我的时候,不再是因为要给他调程序了。
无涯WuYa
2020/07/15
8.3K0
python定时任务最强框架APScheduler详细教程
Python定时任务框架之Apscheduler 案例分享
  前面已经讲过Celery做定时任务的场景,现在分享另一个框架Apscheduler。Apscheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。同时,它还支持异步执行、后台执行调度任务。本人小小的建议是一般项目用APScheduler,因为不用像Celery那样再单独启动worker、beat进程,而且API也很简洁。
全栈测试开发日记
2023/02/02
1.8K0
Python定时任务框架之Apscheduler 案例分享
python定时执行函数_python定时执行详解「建议收藏」
1. sched模块,准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度。
全栈程序员站长
2022/09/30
2.4K0
定时任务实现的几种方式
Quartz:翻译是石英,手上石英表表示天生是个定时框架,既然网上资料一大堆,不如查查官网记录。
疯狂的KK
2019/08/16
2K0
Python-定时器使用
通过crontab -e命令,添加定时器任务。定期执行python的脚本。如果-e后面是多条命名,可以用分号”;”进行分割。用分号 (;) 所分割的话,那么命令会连续的执行下去。如果每个命令被 && 号分隔,那么这些命令会一直执行下去,如果中间有错误的命令存在,则不再执行后面的命令,没错则执行到完为止。如果每个命令被双竖线(||)分隔符分隔,如果命令遇到可以成功执行的命令,那么命令停止执行,即使后面还有正确的命令则后面的所有命令都将得不到执行。假如命令一开始就执行失败,那么就会执行 || 后的下一个命令,直到遇到有可以成功执行的命令为止,假如所有的都失败,则所有这些失败的命令都会被尝试执行一次。
py3study
2020/01/06
1.2K0
相关推荐
Python 实现定时任务的九种方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验