简单的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字典get()方法用法分析
Apr 17 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
python在文本开头插入一行的实例
May 02 Python
python多任务及返回值的处理方法
Jan 22 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
python实现图像全景拼接
Mar 27 Python
详解Python多线程下的list
Jul 03 Python
Python实现机器学习算法的分类
Jun 03 Python
如何通过一篇文章了解Python中的生成器
Apr 02 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操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
python3获取当前目录的实现方法
2019/07/29 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
金融行业职业生涯规划范文
2014/01/17 职场文书
给实习单位的感谢信
2014/02/01 职场文书
财产公证书格式
2014/04/10 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
工厂标语大全
2014/10/06 职场文书
店铺转让协议书
2015/01/29 职场文书
明确岗位职责
2015/02/14 职场文书
阿凡达观后感
2015/06/10 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python