简单的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使用Image处理图片常用技巧分析
Jun 01 Python
Python时间获取及转换知识汇总
Jan 11 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
python爬取盘搜的有效链接实现代码
Jul 20 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
python开发前景如何
Jun 11 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
pycharm无法导入lxml的解决办法
Mar 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
关于时间计算的结总
2006/12/06 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
php关联数组快速排序的方法
2015/04/17 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
numpy返回array中元素的index方法
2018/06/27 Python
Python是什么 Python的用处
2020/05/26 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
工会换届选举方案
2014/05/21 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
课外活动实习计划
2015/01/19 职场文书
财务人员入职担保书
2015/09/22 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书