简单的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读写unicode文件的方法
Jul 10 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
Python 定义只读属性的实现方式
Mar 05 Python
Python如何实现FTP功能
May 28 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 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
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
浅析Node.js查找字符串功能
2014/09/03 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
使用Python实现简单的服务器功能
2017/08/25 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
Python给图像添加噪声具体操作
2019/03/03 Python
python文件写入write()的操作
2019/05/14 Python
pytest中文文档之编写断言
2019/09/12 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
印尼网上商店:Alfacart.com
2019/03/11 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
企划专员岗位职责
2013/12/09 职场文书
出国考察邀请函
2014/01/21 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
军训结束新闻稿
2015/07/17 职场文书
Python正则表达式中flags参数的实例详解
2022/04/01 Python