• python定时器


    一.Timer

    Timer为threading中的一个类,用来指定的秒数后调用函数,我们来看下Timer类的构造参数。

    interval:设置定时运行的时间

    function:设置定时的事件

    args:参数

    kwargs:字典类型的参数

    下面我们看下具体的用法

    1.无参的情况下

    from threading import Timer
    def fun():
        print("我是一个定时器")
    
    t = Timer(3, fun)  # 声明一个定时器,设置多少3s后执行
    t.start()  # 启动定时器

    2.有参的情况下

    复制代码
    from threading import Timer
    
    def fun(name):
        print("我是一个定时器", name)
    
    t = Timer(3, fun, args=("黎明",))  # 声明一个定时器,设置多少s后执行
    t.start()  # 启动定时器
    复制代码

    3.多参的情况下

    复制代码
    from threading import Timer
    
    def fun(name, age):
        print("我是一个定时器", name, age)
    
    t = Timer(3, fun, args=("黎明", 1))  # 声明一个定时器,设置多少s后执行
    t.start()  # 启动定时器
    复制代码

    4.要想设置每隔3s运行一次

    复制代码
    from threading import Timer
    
    a = 0
    
    def fun():
        global a
        a = a + 1
        print("我是一个定时器")
        t = Timer(3, fun)  # 声明一个定时器,设置多少s后执行
        t.start()  # 启动定时器
        if a == 3:
            t.cancel()  # 取消定时器
    
    fun()
    复制代码

    start():启动定时任务

    cancel():取消定时任务

    二.schedule

    schedule是一个轻量级的定时库,可指定某秒/分/时/天/周的时间。

    1.因为schedule是第三方库,使用时需提前安装

    pip install schedule

    2.设置格式

    scedule.every(时间数).时间类型.do(job):表单个时间

    scedule.every(时间数1).to(时间数2).时间类型.do(job):表一段时间范围时间

    3.具体用法

    设置每隔5秒后运行一次

    复制代码
    import schedule
    
    def fun(name, age):
        print("我是一个定时器", name, age)
    
    schedule.every(5).seconds.do(fun, "李明", 12)  # 每隔5s运行一次
    
    while True:
        schedule.run_pending()  # 运行所有可以运行的任务
    复制代码

    设置每隔1-5秒运行一次

    复制代码
    import schedule
    
    def fun(name, age):
        print("我是一个定时器", name, age)
    
    schedule.every(1).to(5).seconds.do(fun, "李明", 12)  # 每隔1-5s运行一次
    
    while True:
        schedule.run_pending()  # 运行所有可以运行的任务
    复制代码

    下面设置分/时/天/周就不一一介绍了,直接贴写法了

    复制代码
    schedule.every(2).minutes.do(fun, "李明", 12)  # 每2min运行一次
    schedule.every(2).minutes.at(":20").do(fun, "李明", 12)  # 每2min30s运行一次
    schedule.every(2).to(2).minutes.do(fun, "李明", 12)  # 每2-5min运行一次
    schedule.every().hour.do(fun, "李明", 12)  # 每2小时执行一次
    schedule.every().hour.at(":40").do(fun, "李明", 12)  # 每小时40分钟执行一次
    schedule.every().day.do(fun, "李明", 12)  # 每天当前时间执行一次
    schedule.every().day.at("15:15").do(fun, "李明", 12)  # 每天规定时间执行一次,
    schedule.every().tuesday.at("15:19:30").do(fun, "李明", 12)  # 每周二15:19:30运行一次
    schedule.every().tuesday.do(fun, "李明", 12)  # 每周二当前时间运行一次
    复制代码

    周一至周五写法

    monday

    tuesday

    wednesday

    thursday

    friday

    saturday

    sunday

    4.取消定时任务

    clear():默认取消全部任务,也可通过tag取消指定的任务

    复制代码
    import schedule
    
    
    def fun(name, age):
        print("我是一个定时器", name, age)
    
    
    schedule.every(1).to(5).seconds.do(fun, "李明", 14).tag("tag")  # 每隔1-5s运行一次,设置tag
    
    while True:
        schedule.run_pending()  # 运行所有可以运行的任务
        schedule.clear("tag")  # 取消指定标签的任务
        # schedule.clear()  # 取消全部任务
    复制代码

     

     

     

     

     

    文章来源:https://www.cnblogs.com/lihongtaoya/ ,请勿转载

     

  • 相关阅读:
    记一次springboot的@RequestBody json值注入失败的问题(字段大小写的问题)
    程序员就该这样解读《隐秘的角落》
    EMQX Cloud全托管的 MQTT 消息云服务
    ipad下载的文件在哪里可以找到
    31.3 Java进阶之lambda方法引用
    深入浅出Spring Cloud Netflix - Ribbon
    (附源码)小程序 工程技术研究中心 毕业设计 201738
    redis的配置文件
    Python入门篇之循环结构
    云盘文件批量分享脚本
  • 原文地址:https://www.cnblogs.com/lihongtaoya/p/17132429.html