简单的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 相关文章推荐
python3使用urllib示例取googletranslate(谷歌翻译)
Jan 23 Python
Python获取邮件地址的方法
Jul 10 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
python实现txt文件格式转换为arff格式
May 31 Python
python字符串Intern机制详解
Jul 01 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python递归法解决棋盘分割问题
Jul 17 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 Python
区分python中的进程与线程
Aug 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
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python实现的密码强度检测器示例
2017/08/23 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
PHP开发的一般流程
2013/08/13 面试题
四风存在的原因分析
2014/02/11 职场文书
英文求职信写作小建议
2014/02/16 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
活动总结格式
2014/08/30 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
2014年幼师工作总结
2014/11/22 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
springboot实现string转json json里面带数组
2022/06/16 Java/Android