Python实现定时任务


Posted in Python onFebruary 08, 2017

Python下实现定时任务的方式有很多种方式。下面介绍几种

循环sleep:

这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数。

def timer(n): 
  ''''' 
  每n秒执行一次 
  ''' 
  while True:  
    print time.strftime('%Y-%m-%d %X',time.localtime())  
    yourTask() # 此处为要执行的任务  
    time.sleep(n)

threading的Timer:

threading模块中的Timer能够帮助实现定时任务,而且是非阻塞的。

比如3秒后打印helloworld:

def printHello(): 
  print "hello world" 
 
Timer(3, printHello).start()

比如每3秒打印一次helloworld:

def printHello(): 
  print "Hello World" 
  t = Timer(2, printHello) 
  t.start() 
 
 
if __name__ == "__main__": 
  printHello()

使用sched模块:

sched是一种调度(延时处理机制)。

# -*- coding:utf-8 -*- 
# use sched to timing 
import time 
import os 
import sched 
 
 
# 初始化sched模块的scheduler类 
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。 
schedule = sched.scheduler(time.time, time.sleep) 
 
 
# 被周期性调度触发的函数 
def execute_command(cmd, inc): 
  ''''' 
  终端上显示当前计算机的连接情况 
  ''' 
  os.system(cmd) 
  schedule.enter(inc, 0, execute_command, (cmd, inc)) 
 
 
def main(cmd, inc=60): 
  # enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数, 
  # 给该触发函数的参数(tuple形式) 
  schedule.enter(0, 0, execute_command, (cmd, inc)) 
  schedule.run() 
 
 
# 每60秒查看下网络连接情况 
if __name__ == '__main__': 
  main("netstat -an", 60)

使用定时框架APScheduler:

APScheduler是基于Quartz的一个Python定时任务框架。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。

这个现在还没自己尝试过,等过段时间用了再来补充。

使用windows的定时任务:

这里可以将所需要的Python程序打包成exe文件,然后在windows下设置定时执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python使用xslt提取网页数据的方法
Feb 23 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
Python之Class&Object用法详解
Dec 25 Python
Python的pygame安装教程详解
Feb 10 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 Python
python scrapy简单模拟登录的代码分析
Jul 21 Python
Python装饰器详细介绍
Mar 25 Python
python使用matplotlib绘制柱状图教程
Feb 08 #Python
Python实现简单的多任务mysql转xml的方法
Feb 08 #Python
python使用matplotlib绘制折线图教程
Feb 08 #Python
关于Python中Inf与Nan的判断问题详解
Feb 08 #Python
python3.5实现socket通讯示例(TCP)
Feb 07 #Python
Python中字典的setdefault()方法教程
Feb 07 #Python
Python连接数据库学习之DB-API详解
Feb 07 #Python
You might like
php 分库分表hash算法
2009/11/12 PHP
PHP英文字母大小写转换函数小结
2014/05/03 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
python复制与引用用法分析
2015/04/08 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
护士长2014年度工作总结
2014/11/11 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
复兴之路展览观后感
2015/06/02 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
小程序实现文字循环滚动动画
2021/06/14 Javascript
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers