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

     

  • 相关阅读:
    专栏文章列表
    接住我的下巴,Github上超火的异步编程神仙笔记也太香了
    什么是SystemUI
    【鸟哥杂谈】Linux环境下解决端口占用问题 Error: listen EADDRINUSE: address already in use :::8266
    java计算机毕业设计家教到家平台源码+mysql数据库+系统+lw文档+部署
    第六章 解析glob.glob与os.walk(工具)
    群狼调研(长沙口味测试)如何开展产品口味测试
    CentOS yum出现 Error: Cannot find a valid baseurl for repo: base
    考试宝导出文件
    第十七章:Java连接数据库jdbc(java和myql数据库连接)
  • 原文地址:https://www.cnblogs.com/lihongtaoya/p/17132429.html