用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持久性管理pickle模块详细介绍
Feb 18 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
在Django中使用Sitemap的方法讲解
Jul 22 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
python设置环境变量的原因和方法
Jun 24 Python
Python log模块logging记录打印用法解析
Jan 20 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
python 获取字典键值对的实现
Nov 12 Python
Django url 路由匹配过程详解
Jan 22 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
浅谈PHP的反射API
2017/02/26 PHP
php微信开发之谷歌测距
2018/06/14 PHP
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
详解Python函数作用域的LEGB顺序
2016/05/14 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
Python实现登陆文件验证方法
2018/10/06 Python
Django model反向关联名称的方法
2018/12/15 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python Web版语音合成实例详解
2019/07/16 Python
Django实现发送邮件功能
2019/07/18 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
商务助理求职信范文
2014/04/20 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python