zoukankan      html  css  js  c++  java
  • Python3.7.1学习(二)使用schedule模块定时执行任务

    python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。

    1 安装

     1.1在cmd中输入python --version,输出结果:Python 3.7.1

     1.2在cmd中输入pip install schedule

    2代码如下:

    import schedule
    import time

    def job():
    print("I'm working...")

    schedule.every(1).minutes.do(job)
    schedule.every().hour.do(job)
    schedule.every().day.at("10:30").do(job)
    schedule.every(5).to(10).days.do(job)
    schedule.every().monday.do(job)
    schedule.every().wednesday.at("13:15").do(job)

    while True:
    schedule.run_pending()
    time.sleep(1)

    # 上面的意思就是:
    # 每隔十分钟执行一次任务
    # 每隔一小时执行一次任务
    # 每天的10: 30
    # 执行一次任务
    # 每隔5到10天执行一次任务 
    # 每周一的这个时候执行一次任务
    # 每周三13: 15
    # 执行一次任务
    # run_pending:运行所有可以运行的任务  
    #
    # 当然,如果函数中带有参数怎么办呢?
    # 很简单,如下所示:
    def job(name):
    print("I'm working...")


    name = 'jack'
    schedule.every(1).minutes.do(job, name)
    schedule.every().hour.do(job, name)
    schedule.every().day.at("10:30").do(job, name)
    schedule.every(5).to(10).days.do(job, name)
    schedule.every().monday.do(job, name)
    schedule.every().wednesday.at("13:15").do(job, name)

    while True:
    schedule.run_pending()
    time.sleep(1)
      
    疑问解答:
    #
    # 最近有人问我while
    # True之类的是什么意思,很简单,如果你去掉while
    # True这个死循环的话,schedule.run_pending()
    # 是没有办法持续运行的,那么schedule.run_pending()
    # 是个什么东西呢——
    # schedule其实就只是个定时器。在while
    # True死循环中,schedule.run_pending()
    # 是保持schedule一直运行,去查询上面那一堆的任务,在任务中,就可以设置不同的时间去运行。跟linux中设置crontab定时任务是类似的。
    #
    # 所以,schedule有一定的局限性,所以只能用来执行一些小型的定时任务,它的局限性在哪呢——
    # 1.
    # 需要定时运行的函数job不应当是死循环类型的,也就是说,这个线程应该有一个执行完毕的出口。一是因为线程万一僵死,会是非常棘手的问题;二是下一次定时任务还会开启一个新的线程,执行次数多了就会演变成灾难。
    #
    # 2.
    # 如果schedule的时间间隔设置得比job执行的时间短,一样会线程堆积形成灾难,也就是说,我job的执行时间是1个小时,但是我定时任务设置的是5分钟一次,那就会一直堆积线程。

    #转自:https://blog.csdn.net/liao392781/article/details/80521194#comments
     
     



     
  • 相关阅读:
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
    uva 129 krypton factors ——yhx
    uva 524 prime ring problem——yhx
    uva 10976 fractions again(水题)——yhx
    uva 11059 maximum product(水题)——yhx
    uva 725 division(水题)——yhx
    uva 11853 paintball(好题)——yhx
    uva 1599 ideal path(好题)——yhx
    uva 1572 self-assembly ——yhx
  • 原文地址:https://www.cnblogs.com/simpleBlue3/p/10702024.html
Copyright © 2011-2022 走看看