Python3.7.1学习(二)使用schedule模块定时执行任务
python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。
1 安装
1.1在cmd中输入python --version,输出结果:Python 3.7.1
1.2在cmd中输入pip install schedule
2代码如下:
import schedule
import time def job():
print("I'm working...") schedule.every(1).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).days.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job) while True:
schedule.run_pending()
time.sleep(1) # 上面的意思就是:
# 每隔十分钟执行一次任务
# 每隔一小时执行一次任务
# 每天的10: 30
# 执行一次任务
# 每隔5到10天执行一次任务
# 每周一的这个时候执行一次任务
# 每周三13: 15
# 执行一次任务
# run_pending:运行所有可以运行的任务
#
# 当然,如果函数中带有参数怎么办呢?
# 很简单,如下所示:
def job(name):
print("I'm working...") name = 'jack'
schedule.every(1).minutes.do(job, name)
schedule.every().hour.do(job, name)
schedule.every().day.at("10:30").do(job, name)
schedule.every(5).to(10).days.do(job, name)
schedule.every().monday.do(job, name)
schedule.every().wednesday.at("13:15").do(job, name) while True:
schedule.run_pending()
time.sleep(1)
疑问解答:
#
# 最近有人问我while
# True之类的是什么意思,很简单,如果你去掉while
# True这个死循环的话,schedule.run_pending()
# 是没有办法持续运行的,那么schedule.run_pending()
# 是个什么东西呢——
# schedule其实就只是个定时器。在while
# True死循环中,schedule.run_pending()
# 是保持schedule一直运行,去查询上面那一堆的任务,在任务中,就可以设置不同的时间去运行。跟linux中设置crontab定时任务是类似的。
#
# 所以,schedule有一定的局限性,所以只能用来执行一些小型的定时任务,它的局限性在哪呢——
# 1.
# 需要定时运行的函数job不应当是死循环类型的,也就是说,这个线程应该有一个执行完毕的出口。一是因为线程万一僵死,会是非常棘手的问题;二是下一次定时任务还会开启一个新的线程,执行次数多了就会演变成灾难。
#
# 2.
# 如果schedule的时间间隔设置得比job执行的时间短,一样会线程堆积形成灾难,也就是说,我job的执行时间是1个小时,但是我定时任务设置的是5分钟一次,那就会一直堆积线程。
#转自:https://blog.csdn.net/liao392781/article/details/80521194#comments
Python3.7.1学习(二)使用schedule模块定时执行任务的更多相关文章
- python中使用schedule模块定时执行任务
python中有一个轻量级的定时任务调度的库:schedule.他可以完成每分钟,每小时,每天,周几,特定日期的定时任务.因此十分方便我们执行一些轻量级的定时任务. 代码如下: import sche ...
- Python3 学习第九弹: 模块学习二之文件管理模块
os模块 提供访问操作系统的接口 1> name 获得当前操作系统 其中 'nt' 是 windows 'posix' 是 linux 2> environ 获得当前系统的环境变量的字典, ...
- Python3标准库(二) re模块
正则表达式(Regular Expression)是字符串处理的常用工具,通常被用来检索.替换那些符合某个模式(Pattern)的文本.很多程序设计语言都支持正则表达式,像Perl.Java.C/C+ ...
- python3.5.3rc1学习二
#if else示例x = 5y = 8 if x > y: print("x is greater than y")else: print("x is not g ...
- Python3.6 Schedule模块定时任务
本文使用Python的Schedule模块.Python访问数据库的框架SQLAIchemy 实现了一个:周期性读取mysql 数据的小示例. 一,编程环境 PyCharm2016,Anaconda3 ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- 从零开始学习PYTHON3讲义(十二)画一颗心送给你
(内容需要,本讲使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客.) <从零开始PYTHON3>第十二讲 上一节课我们主要讲解了数值计算和符号计算.数值计算的 ...
- Node学习(二) --使用http和fs模块实现一个简单的服务器
1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...
- angular学习笔记(二)-创建angular模块
如果在页面的html标签(或任意标签)中添加ng-app,表示对整个页面应用angular来管理. 他是一个模块. 模块有助于把东西从全局命名空间中隔离. 今天学习如何自定义创建模块: <!DO ...
随机推荐
- JS循环+循环嵌套+经典例题+图形题
首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...
- LeetCode初级算法--树02:验证二叉搜索树
LeetCode初级算法--树02:验证二叉搜索树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...
- 【Java基础】谈谈集合.CopyOnWriteArrayList
目录 实现原理 遍历时不用加锁的原因 CopyOnWriteArrayLis的缺点 使用场景 总结 参考 本篇博客介绍CopyOnWriteArrayList类,读完本博客你将会了解: 什么是COW机 ...
- CVE-2016-5159 利用脏牛漏洞Linux提权复现
当前路径: /var/www 磁盘列表: / 系统信息: Linux zico 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 ...
- windows下cmd组合命令和管道命令
组合命令:&& 管道命令:|
- Vue学习系列(三)——基本指令
前言 在上一篇中,我们已经对组件有了更加进一步的认识,从组件的创建构造器到组件的组成,进而到组件的使用,.从组件的基本使用.组件属性,以及自定义事件实现父子通讯和巧妙运用插槽slot分发内容,进一步的 ...
- 09 python学习笔记-操作excel(九)
python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的.这几个模块可以使用pip安装, ...
- ElasticSearch - ElasticSearch和kinaba的简单使用
ElasticSearch和kinaba的简单使用 ElasticSeatch 文档推荐 ElasticSearch 下载 (端口 9200) 安装好es,可以访问 http://localhost: ...
- Unity5-ABSystem(一):AssetBundle原理
转载自:http://blog.csdn.net/lodypig/article/details/51863683 说明 AssetBundle简介 AssetBundle内部格式 normal bu ...
- Java 用单向循环链表实现 约瑟夫问题
public class lianbiao2 { class Node{ Node next; int number; public Node getNext() { return next; } p ...