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
目录
相关文章
|
8天前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
39 4
|
1月前
|
存储 安全 数据处理
Python 内置模块 collections 详解
`collections` 是 Python 内置模块,提供多种高效数据类型,如 `namedtuple`、`deque`、`Counter` 等,帮助开发者优化数据处理流程,提升代码可读性与性能,适用于复杂数据结构管理与高效操作场景。
99 0
|
10月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
316 62
|
2月前
|
数据安全/隐私保护 Python
抖音私信脚本app,协议私信群发工具,抖音python私信模块
这个实现包含三个主要模块:抖音私信核心功能类、辅助工具类和主程序入口。核心功能包括登录
|
5月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
232 14
|
9月前
|
Python
Python Internet 模块
Python Internet 模块。
208 74
|
6月前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
83 8
|
6月前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
101 5
|
10月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
263 63
|
10月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
217 61

推荐镜像

更多