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使用cookie库操保存cookie详解
Mar 03 Python
python实现根据用户输入从电影网站获取影片信息的方法
Apr 07 Python
Python自动扫雷实现方法
Jul 25 Python
Python Requests 基础入门
Apr 07 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
python如何获取apk的packagename和activity
Jan 10 Python
Python数组并集交集补集代码实例
Feb 18 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
Python爬虫requests库多种用法实例
May 28 Python
python使用建议与技巧分享(一)
Aug 17 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 Python
Python 数据可视化之Seaborn详解
Nov 02 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
PHP 超链接 抓取实现代码
2009/06/29 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
php简单统计在线人数的方法
2016/05/10 PHP
php实现学生管理系统
2020/03/21 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
PHP7 标准库修改
2021/03/09 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
php跨域调用json的例子
2013/11/13 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
React组件之间的通信的实例代码
2017/06/27 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
Python函数中的可变长参数详解
2019/09/12 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
python PIL模块的基本使用
2020/09/29 Python
String和StringBuffer的区别
2015/08/13 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
简历自荐信
2013/12/02 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
社区健康教育实施方案
2014/03/18 职场文书
授权委托书协议书
2014/10/16 职场文书
区域经理岗位职责
2015/02/02 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis