简单的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中列表元素连接方法join用法实例
Apr 07 Python
Python 多线程实例详解
Mar 25 Python
python random从集合中随机选择元素的方法
Jan 23 Python
解决Mac下使用python的坑
Aug 13 Python
详解python中docx库的安装过程
Nov 08 Python
关于Python3 lambda函数的深入浅出
Nov 27 Python
关于Python中定制类的比较运算实例
Dec 19 Python
python实时监控logstash日志代码
Apr 27 Python
python和go语言的区别是什么
Jul 20 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
pytorch训练神经网络爆内存的解决方案
May 22 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
如何做到多笔资料的同步
2006/10/09 PHP
php导出excel格式数据问题
2014/03/11 PHP
js输出列表实现代码
2010/09/12 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
python实现图片识别汽车功能
2018/11/30 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
Python3常见函数range()用法详解
2019/12/30 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
Python3如何判断三角形的类型
2020/04/12 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
早读迟到检讨书
2014/01/24 职场文书
娱乐节目策划方案
2014/06/10 职场文书
毕业大学生自荐信
2014/06/17 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis