用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 web程序
Sep 11 Python
python实现颜色rgb和hex相互转换的函数
Mar 19 Python
初步解析Python下的多进程编程
Apr 28 Python
深入讲解Python编程中的字符串
Oct 14 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
python conda操作方法
Sep 11 Python
python模拟实现分发扑克牌
Apr 22 Python
Python Map 函数的使用
Aug 28 Python
python自动生成证件号的方法示例
Jan 14 Python
Django+Celery实现定时任务的示例
Jun 23 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 Python
总结三种用 Python 作为小程序后端的方式
May 02 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的类 功能齐全的发送邮件类
2006/10/09 PHP
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
详解PHP中的PDO类
2015/07/06 PHP
PHP之预定义接口详解
2015/07/29 PHP
js 获取Listbox选择的值的代码
2010/04/15 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
JsChart组件使用详解
2018/03/04 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
浅析python的Lambda表达式
2019/02/27 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
什么是数组名
2012/05/10 面试题
会计工作决心书
2014/03/11 职场文书
无偿献血倡议书
2014/04/14 职场文书
新文化运动的基本口号
2014/06/21 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
高一作文之暖冬
2019/11/09 职场文书