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 相关文章推荐
Python模块包中__init__.py文件功能分析
Jun 14 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
Django如何配置mysql数据库
May 04 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
python实现PID算法及测试的例子
Aug 08 Python
给我一面国旗 python帮你实现
Sep 30 Python
Django项目中使用JWT的实现代码
Nov 04 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 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 unset全局变量运用问题的深入解析
2013/06/17 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
JS对象的深度克隆方法示例
2017/03/16 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
常用python数据类型转换函数总结
2014/03/11 Python
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
.NET是怎么支持多种语言的
2015/02/24 面试题
运动会入场解说词
2014/02/07 职场文书
《童年》教学反思
2014/02/18 职场文书
企业标语大全
2014/07/01 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS