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函数式编程指南(三):迭代器详解
Jun 24 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
Python向日志输出中添加上下文信息
May 24 Python
Python生成数字图片代码分享
Oct 31 Python
Django学习教程之静态文件的调用详解
May 08 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Python按照list dict key进行排序过程解析
Apr 04 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
PHP中ob_start函数的使用说明
2013/11/11 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
PHP时间函数使用详解
2019/03/21 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python连接mongodb密码认证实例
2018/10/16 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
环境建设实施方案
2014/03/14 职场文书
青年志愿者活动总结
2014/04/26 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
安全生产年活动总结
2014/08/29 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
2015年共青团工作总结
2015/05/15 职场文书