用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编程中的反模式实例分析
Dec 08 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
深入理解python中的select模块
Apr 23 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
python读取二进制mnist实例详解
May 31 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
python 实现A*算法的示例代码
Aug 13 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
如何使用pdb进行Python调试
Jun 30 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
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
php文件上传类的分享
2017/07/06 PHP
JavaScript DOM 添加事件
2009/02/14 Javascript
理解 JavaScript 预解析
2009/10/25 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
使用Python下载Bing图片(代码)
2013/11/07 Python
python实现socket端口重定向示例
2014/02/10 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
python 实现音频叠加的示例
2020/10/29 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
成事在人观后感
2015/06/16 职场文书