zoukankan      html  css  js  c++  java
  • python定时执行任务 轻量级

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

    代码如下:

     1 import schedule
     2 import time
     3 def job(): 
     4 print("I'm working...")
     5  schedule.every(10).minutes.do(job)
     6  schedule.every().hour.do(job)
     7  schedule.every().day.at("10:30").do(job)
     8  schedule.every(5).to(10).days.do(job)
     9  schedule.every().monday.do(job)
    10 schedule.every().wednesday.at("13:15").do(job)
    11 while True: 
    12 schedule.run_pending() 
    13 time.sleep(1)

    上面的意思就是:

    每隔十分钟执行一次任务

    每隔一小时执行一次任务

    每天的 10:30 执行一次任务

    每隔 5 到 10 天执行一次任务

    每周一的这个时候执行一次任务

    每周三 13:15 执行一次任务

    run_pending:运行所有可以运行的任务

    当然,如果函数中带有参数怎么办呢?

    很简单,如下所示:

     1  import schedule
     2  import time
     3  def job(name):
     4  print("her name is : ", name)
     5  name = xiaona
     6  schedule.every(10).minutes.do(job, name)
     7  schedule.every().hour.do(job, name)
     8  schedule.every().day.at("10:30").do(job, name)
     9  schedule.every(5).to(10).days.do(job, name)
    10  schedule.every().monday.do(job, name)
    11  schedule.every().wednesday.at("13:15").do(job, name)
    12 while True:
    13  schedule.run_pending()
    14 time.sleep(1)

    ⚠⚠⚠时间是24小时制,要按标准来写,否则就会

    G`35F7G{2V`N[O9)9AHJO]E

    最后改为09:00就ok了

    疑问解答:

    最近有人问我 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 分钟一次,那就会一直堆积线程。


    About Me

    QQ 群:1094019526    tg群:群里有

    联系我请加 QQ 好友 (1362449059),注明添加缘由

    文章内容来源于TOM的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

    本文参考于https://blog.csdn.net/liao392781/article/details/80521194

    觉得有用请点个支持,谢谢! 弘扬开源精神,用爱发电!! Code changes the world!!!
  • 相关阅读:
    matplotlib 进阶之origin and extent in imshow
    Momentum and NAG
    matplotlib 进阶之Tight Layout guide
    matplotlib 进阶之Constrained Layout Guide
    matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
    matplotlb 进阶之Styling with cycler
    matplotlib 进阶之Legend guide
    Django Admin Cookbook-10如何启用对计算字段的过滤
    Django Admin Cookbook-9如何启用对计算字段的排序
    Django Admin Cookbook-8如何在Django admin中优化查询
  • 原文地址:https://www.cnblogs.com/TOM666/p/12837529.html
Copyright © 2011-2022 走看看