简单的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使用openpyxl读写excel文件的方法
Jun 30 Python
基于python 字符编码的理解
Sep 02 Python
Python3 中文文件读写方法
Jan 23 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
Python中判断输入是否为数字的实现代码
May 26 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
Django发送邮件功能实例详解
Sep 02 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
Python调用jar包方法实现过程解析
Aug 11 Python
Python学习之os包使用教程详解
Mar 21 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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
JS画5角星方法介绍
2013/09/17 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
python控制台显示时钟的示例
2014/02/24 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
Python切片操作深入详解
2018/07/27 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Python 列表的清空方式
2020/01/13 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
2014年教师培训的自我评价
2014/01/03 职场文书
车辆转让协议书
2014/04/15 职场文书
售后服务质量承诺书
2015/04/29 职场文书