简单的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调用cmd命令行制作刷博器
Jan 13 Python
Python 类与元类的深度挖掘 I【经验】
May 06 Python
python基本语法练习实例
Sep 19 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
django反向解析和正向解析的方式
Jun 05 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
Python中的集合介绍
Jan 28 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
使用opencv中匹配点对的坐标提取方式
Jun 04 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 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
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
python检测是文件还是目录的方法
2015/07/03 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
彻底理解Python list切片原理
2017/10/27 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
python实现查找所有程序的安装信息
2020/02/18 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
人事主管岗位职责范本
2013/12/04 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
个人担保书格式范文
2014/05/12 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
铅球加油稿100字
2014/09/26 职场文书
运动会广播稿20字
2015/08/19 职场文书