用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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
Python实现简单的多任务mysql转xml的方法
Feb 08 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
python可视化实现代码
Jan 15 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
python调用接口的4种方式代码实例
Nov 19 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
django rest framework使用django-filter用法
Jul 15 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
python 爬取华为应用市场评论
May 29 Python
python基础之模块的导入
Oct 24 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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
学习jquery之一
2007/04/27 Javascript
Javascript中Eval函数的使用说明
2008/10/11 Javascript
JQuery toggle使用分析
2009/11/16 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
Python中optparse模块使用浅析
2015/01/01 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python中属性和描述符的正确使用
2016/08/23 Python
详解python之配置日志的几种方式
2017/05/22 Python
python实现输入数字的连续加减方法
2018/06/22 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
软件测试英文面试题
2012/10/14 面试题
策划主管的工作职责
2013/11/24 职场文书
员工薪酬福利制度
2014/01/17 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
对标管理实施方案
2014/03/12 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
业务员岗位职责范本
2015/04/03 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
PyTorch 如何自动计算梯度
2021/05/23 Python