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
 
 

 

最新文章

  1. JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)
  2. 关于Thomas Brinkhoff移动对象生成器的修改
  3. [【codechefCHSEQ22】Chef and Favourite Sequence(并查集)
  4. StringUtilsd的isEmpty、isNotEmpty、isBlank、isNotBlank
  5. P3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四
  6. JavaScript实现拖拽预览,AJAX小文件上传
  7. SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
  8. URL伪静态设置 (apache2.4)
  9. perl 读取cookie
  10. QSettings操作配置文件
  11. 数据结构中的棧在C#中的实现
  12. android 实现与服务器的长链接 方式
  13. iOS tableViewCell plane格式下,接近section边缘不显示分割线却被复用解决办法
  14. X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯
  15. pycharm 2017新建文件添加编码方式等
  16. Python学习笔记四
  17. JavaException的使用
  18. 验证对Random的两个猜想
  19. 比原链设计思考: 扩展性UTXO模型
  20. 【AMQ】之JMS概念

热门文章

  1. Snagit卸载不彻底的问题
  2. std::wstring
  3. 第三方软件 vnc提权
  4. 19.Linux进程管理概述
  5. [NOIP2013提高组]华容道
  6. 代码传奇 | 身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君
  7. 云开发如何解决serverless对端的最后一公里问题
  8. 一文读懂Java类加载机制
  9. 解析 Microsoft.Extensions.DependencyInjection 2.x 版本实现
  10. C++两个队列实现一个栈