Python----使用schedule模块可以非常简单地设置定时任务

简介: Python----使用schedule模块可以非常简单地设置定时任务

一、安装

pip install schedule

二、schedule模块的用法

1 设置每x周/天/小时/分钟/秒执行一次

如下分别列举了每两秒、每两分钟、每两小时、每两天、每两周执行一次的代码

import schedule
import time

def do_func():

    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")
    

def main():
    # 每两秒执行一次
    schedule.every(2).seconds.do(do_func)
    # 每两分钟执行一次
    schedule.every(2).minutes.do(do_func)
    # 每两小时执行一次
    schedule.every(2).hours.do(do_func)
    # 每两天执行一次
    schedule.every(2).days.do(do_func)
    # 每两周执行一次
    schedule.every(2).weeks.do(do_func)

    while True:
        schedule.run_pending()

if __name__=="__main__":
    main()

上述代码时间间隔较长,无法执行演示,下面只执行每2秒执行一次的代码如下:

import schedule
import time

def do_func():

    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")

def main():
    schedule.every(2).seconds.do(do_func)

    while True:
        schedule.run_pending()

if __name__=="__main__":
    main()

执行结果如下:

2022-05-24 23:15:01 in do func ...
2022-05-24 23:15:03 in do func ...
2022-05-24 23:15:05 in do func ...
2022-05-24 23:15:07 in do func ...
2022-05-24 23:15:09 in do func ...
2022-05-24 23:15:11 in do func ...
2022-05-24 23:15:13 in do func ...

2 设置定时执行

设置在每分钟的多少秒时,每小时多少分的时刻,每天几点等等指定时间点执行的设置方法如下所示

import schedule
import time

def do_func():

    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")


def main():
    # 每分钟的30秒时执行
    schedule.every().minute.at(":30").do(do_func)
    # 每小时10分时执行
    schedule.every().hour.at(":10").do(do_func)
    # 每小时10分30秒时执行
    schedule.every().hour.at("10:30").do(do_func)
    # 每间隔5个小时的10分30秒时执行,比如当前时间7:00,则下一次执行时间为 12:10:30
    schedule.every(5).hour.at("10:30").do(do_func)
    # 每天10点30分执行
    schedule.every().days.at("10:30").do(do_func)
    # 每天10点30分30秒执行
    schedule.every().days.at("10:30:30").do(do_func)
    # 每两天10点30分30秒执行,比如现在执行,明天不执行,后天10:30:30时再次执行
    schedule.every(2).days.at("10:30:30").do(do_func)
    # 每周周一执行
    schedule.every().monday.do(do_func)
    # 每周周三早上8:30执行
    schedule.every().wednesday.at("08:30").do(do_func)
    # 每周周日凌晨 00:00:01 时执行
    schedule.every().sunday.at("00:00:01").do(do_func)

    while True:
        schedule.run_pending()

if __name__=="__main__":
    main()

上述代码时间跨度比较长如法代码演示,下面只演示每分钟30处执行的场景,代码如下:

import schedule
import time

def do_func():

    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")


def main():
    # 每分钟的30秒时执行
    schedule.every().minute.at(":30").do(do_func)

    while True:
        schedule.run_pending()

if __name__=="__main__":
    main()

执行结果如下:

2022-05-24 23:36:30 in do func ...
2022-05-24 23:37:30 in do func ...
2022-05-24 23:38:30 in do func ...
2022-05-24 23:39:30 in do func ...
2022-05-24 23:40:30 in do func ...
2022-05-24 23:41:30 in do func ...
2022-05-24 23:42:30 in do func ...

3 可以通过装饰器设置定时任务

如下,同样是每两秒执行一次的定时任务,其他定时任务格式类似

import schedule
import time

@schedule.repeat(schedule.every(2).seconds)
def do_func():
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func ...")


def main():
    while True:
        schedule.run_pending()

if __name__=="__main__":
    main()

执行结果如下

2022-05-24 23:45:40 in do func ...
2022-05-24 23:45:42 in do func ...
2022-05-24 23:45:44 in do func ...
2022-05-24 23:45:46 in do func ...
2022-05-24 23:45:48 in do func ...
2022-05-24 23:45:50 in do func ...
2022-05-24 23:45:52 in do func ...

4 执行任务的函数可以传参数

(1)不使用装饰器的场景

代码如下,传入两个参数

import schedule
import time

def do_func(name,age):

    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年龄:"+str(age))


def main():
    # 每分钟的30秒时执行
    schedule.every(2).seconds.do(do_func,"张三丰",100)

    while True:
        schedule.run_pending()

if __name__=="__main__":
    main()

执行结果如下:

2022-05-24 23:56:41 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:43 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:45 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:47 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:49 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:56:51 in do func : 姓名:张三丰 年龄:100

(2)使用装饰器的场景

代码如下,传入两个参数

import schedule
import time

@schedule.repeat(schedule.every(2).seconds,"张三丰",100)
def do_func(name,age):
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年龄:"+str(age))


def main():
    while True:
        schedule.run_pending()

if __name__=="__main__":
    main()

执行结果如下:

2022-05-24 23:53:30 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:32 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:34 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:36 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:38 in do func : 姓名:张三丰 年龄:100
2022-05-24 23:53:40 in do func : 姓名:张三丰 年龄:100
目录
相关文章
|
2月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
65 4
|
29天前
|
Python
Python Internet 模块
Python Internet 模块。
121 74
|
2月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
125 63
|
2月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
7天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
20 3
|
2月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
2月前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
2月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
51 5
|
2月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
2月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
71 5