用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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
Python 字典dict使用介绍
Nov 30 Python
python脚本替换指定行实现步骤
Jul 11 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python PyCharm如何进行断点调试
Jul 05 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
python Kmeans算法原理深入解析
Aug 23 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
python Django 反向访问器的外键冲突解决
May 20 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
Python中的 Set 与 dict
Mar 13 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
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
python爬虫工具例举说明
2020/11/30 Python
Python中过滤字符串列表的方法
2020/12/22 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
本科生个人求职自荐信
2013/09/26 职场文书
会计毕业生自我鉴定
2013/11/04 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
大学三年计划书范文
2014/04/30 职场文书
市场营销调查计划书
2014/05/02 职场文书