简单的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检测远程udp端口是否打开的方法
Mar 14 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
详解Python如何生成词云的方法
Jun 01 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
Django CBV模型源码运行流程详解
Aug 17 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
如何在pycharm中安装第三方包
Oct 27 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源码之explode使用说明
2011/08/05 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
了解一点js的Eval函数
2012/07/26 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
js实现常用排序算法
2016/08/09 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
Angular工具方法学习
2016/12/26 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
Python中join和split用法实例
2015/04/14 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
pytorch permute维度转换方法
2018/12/14 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
python3排序的实例方法
2020/10/20 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
工地质量标语
2014/06/12 职场文书
个性车贴标语
2014/06/24 职场文书
写给导师的自荐信
2015/03/06 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
建国大业电影观后感
2015/06/01 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
vue+iview实现手机号分段输入框
2022/03/25 Vue.js