简单的Python调度器Schedule详解


Posted in Python onAugust 30, 2019

最近在做项目的时候经常会用到定时任务,由于我的项目是使用Java来开发,用的是SpringBoot框架,因此要实现这个定时任务其实并不难。

后来我在想如果我要在Python中实现,我要怎么做呢?

一开始我首先想到的是Timer

Timer

这个是一个扩展自threading模块来实现的定时任务。它其实是一个线程。

# 首先定义一个需要定时执行的方法
>>> def hello():
  print("hello!")
# 导入threading,并创建Timer,设置1秒后执行hello方法
>>> import threading
>>> timer = threading.Timer(1,hello)
>>> timer.start()
# 1秒后打印
>>> hello!

这个内置的工具使用起来也简单,对于熟悉Java的同学来说也是非常容易的。然而我一直能否有一个更加Pythonic的工具或者类库呢?

这时我看到一篇文章介绍Scheduler类库的使用,突然觉得这就是我想要的

Scheduler

要使用这个库先使用以下命令进行安装

pip install schedule

schedule模块中的方法可读性非常好,而且支持链式调用

import schedule
# 定义需要执行的方法
def job():
  print("a simple scheduler in python.")
# 设置调度的参数,这里是每2秒执行一次
schedule.every(2).seconds.do(job)
if __name__ == '__main__':
  while True:
    schedule.run_pending()
# 执行结果
a simple scheduler in python.
a simple scheduler in python.
a simple scheduler in python.
...

其它设置调度参数的方法

# 每小时执行
schedule.every().hour.do(job)
# 每天12:25执行
schedule.every().day.at("12:25").do(job)
# 每2到5分钟时执行
schedule.every(5).to(10).minutes.do(job)
# 每星期4的19:15执行
schedule.every().thursday.at("19:15").do(job)
# 每第17分钟时就执行
schedule.every().minute.at(":17").do(job)

如果要执行的方法需要参数呢?

# 需要执行的方法需要传参
def job(val):
  print(f'hello {val}')
# schedule.every(2).seconds.do(job)
# 使用带参数的do方法
schedule.every(2).seconds.do(job, "hylinux")

# 执行结果
hello hylinux
hello hylinux
hello hylinux
hello hylinux
hello hylinux
hello hylinux
...

是不是很简单?

学习资料

https://bhupeshv.me/A-Simple-Scheduler-in-Python/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
Python中Class类用法实例分析
Nov 12 Python
python抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
Python实现调度算法代码详解
Dec 01 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
Python实现自动签到脚本功能
Aug 20 Python
python中实现栈的三种方法
Dec 19 Python
只用40行Python代码就能写出pdf转word小工具
May 31 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 #Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 #Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 #Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 #Python
快速解决docker-py api版本不兼容的问题
Aug 30 #Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 #Python
python pillow模块使用方法详解
Aug 30 #Python
You might like
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
php车辆违章查询数据示例
2016/10/14 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
python处理“
2019/06/10 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
python 等差数列末项计算方式
2020/05/03 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
365 Tickets英国:全球景点门票
2019/07/06 全球购物
中学生演讲稿
2014/04/26 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
考研英语辞职信
2015/05/13 职场文书
年终工作总结范文
2019/06/20 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python