简单的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编写简单的端口扫描器的实例分享
Dec 18 Python
Python Socket传输文件示例
Jan 16 Python
python模块之re正则表达式详解
Feb 03 Python
Python机器学习之决策树算法
Dec 22 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
django表单实现下拉框的示例讲解
May 29 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
python语言实现贪吃蛇游戏
Nov 13 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标准库 (SPL)――Countable用法示例
2020/06/05 PHP
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
几种响应式文字详解
2017/05/19 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python实现简单登录验证
2016/04/13 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
点球小游戏python脚本
2018/05/22 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
使用python实现飞机大战游戏
2020/03/23 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
岳父生日宴会答谢词
2014/01/13 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
村创先争优活动总结
2014/08/28 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
家长反馈意见及建议
2015/06/03 职场文书
清洁工工作总结
2015/08/11 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang