简单的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中使用enumerate函数遍历元素实例
Jun 16 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
Python中创建二维数组
Oct 17 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
python实现人性化显示金额数字实例详解
Sep 25 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
python-for x in range的用法(注意要点、细节)
May 10 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新手入门学习方法
2011/05/08 PHP
php可变长参数处理函数详解
2017/02/22 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
js实现转动骰子模型
2019/10/24 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
Django权限机制实现代码详解
2018/02/05 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
企业宗旨标语
2014/06/10 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
人口与计划生育责任书
2015/05/09 职场文书
立春观后感
2015/06/18 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python