用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删除列表内容
Aug 04 Python
python中input()与raw_input()的区别分析
Feb 27 Python
python算法演练_One Rule 算法(详解)
May 17 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
Python通过队列来实现进程间通信的示例
Oct 14 Python
python3排序的实例方法
Oct 20 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 Python
Python基础之元类详解
Apr 29 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列出MySQL中所有数据库的方法
2015/03/12 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
PHP getName()函数讲解
2019/02/03 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
js切换div css注意的细节
2012/12/10 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
angular.bind使用心得
2015/10/26 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
js new Date()实例测试
2019/10/31 Javascript
js判断密码强度的方法
2020/03/18 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python切片知识解析
2016/03/06 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
百联网上商城:i百联
2017/01/28 全球购物
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
生物专业个人自荐信范文
2013/11/29 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
股权转让协议书范本
2014/04/12 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
社保委托书怎么写
2014/08/02 职场文书
公司费用报销管理制度
2015/08/04 职场文书