• 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/ ,请勿转载

     

  • 相关阅读:
    golang---锁
    一次关于引入自定义JAR包JDK版本问题总结
    漏洞复现----37、Apache Unomi 远程代码执行漏洞 (CVE-2020-13942)
    向毕业妥协系列之机器学习笔记:监督学习-回归与分类(一)
    程序和进程
    RK3568平台开发系列讲解(音频篇)Audio 音量控制流程
    10、MyBatis的缓存
    Oracle Primavera Unifier计划管理器(Planning Manager)
    GB/T40024-2021工业电热设备节能监测方法
    Flutter快学快用02 事件循环:Flutter 中代码是如何执行和运行的
  • 原文地址:https://www.cnblogs.com/lihongtaoya/p/17132429.html