用Python编写简单的定时器的方法


Posted in Python onMay 02, 2015

下面介绍以threading模块来实现定时器的方法。

首先介绍一个最简单实现:

import threading

def say_sth(str):
  print str
  t = threading.Timer(2.0, say_sth,[str])
  t.start()

if __name__ == '__main__':
  timer = threading.Timer(2.0,say_sth,['i am here too.'])
  timer.start()

不清楚在某些特殊应用场景下有什么缺陷否。

下面是所要介绍的定时器类的实现:

class Timer(threading.Thread): 
      """ 
      very simple but useless timer. 
      """ 
      def __init__(self, seconds): 
          self.runTime = seconds 
          threading.Thread.__init__(self) 
      def run(self): 
          time.sleep(self.runTime) 
          print "Buzzzz!! Time's up!" 
   
  class CountDownTimer(Timer): 
      """ 
      a timer that can counts down the seconds. 
      """ 
      def run(self): 
          counter = self.runTime 
          for sec in range(self.runTime): 
              print counter 
              time.sleep(1.0) 
              counter -= 1 
          print "Done" 
   
  class CountDownExec(CountDownTimer): 
      """ 
      a timer that execute an action at the end of the timer run. 
      """ 
      def __init__(self, seconds, action, args=[]): 
          self.args = args 
          self.action = action 
          CountDownTimer.__init__(self, seconds) 
      def run(self): 
          CountDownTimer.run(self) 
          self.action(self.args) 
   
  def myAction(args=[]): 
      print "Performing my action with args:" 
      print args 
  if __name__ == "__main__": 
      t = CountDownExec(3, myAction, ["hello", "world"]) 
      t.start()
Python 相关文章推荐
python实现图片变亮或者变暗的方法
Jun 01 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
详解Python使用simplejson模块解析JSON的方法
Mar 24 Python
django模板语法学习之include示例详解
Dec 17 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
Apr 02 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python3 字符串知识点学习笔记
Feb 08 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 #Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 #Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 #Python
详细解读Python中的__init__()方法
May 02 #Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 #Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 #Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 #Python
You might like
真正的ZIP文件操作类(php)
2007/07/21 PHP
PHP编程风格规范分享
2014/01/15 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
Linux中Python 环境软件包安装步骤
2016/03/31 Python
python设置环境变量的原因和方法
2019/06/24 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
四种会话跟踪技术
2015/05/20 面试题
大学生职业生涯规划书范文
2014/01/14 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
合作协议书范文
2014/08/20 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle