用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数据类型学习笔记
Jan 13 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
详解python中的线程与线程池
May 10 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
Pytorch模型转onnx模型实例
Jan 15 Python
Python中and和or如何使用
May 28 Python
python如何处理程序无法打开
Jun 16 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
Python在字符串中处理html和xml的方法
Jul 31 Python
基于python调用jenkins-cli实现快速发布
Aug 14 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防止站外远程提交表单的方法
2014/10/20 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
Javascript 对象的解释
2008/11/24 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
python读取注册表中值的方法
2013/04/08 Python
python设置检查点简单实现代码
2014/07/01 Python
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
Lucene推荐的分页方式是什么?
2015/12/07 面试题
公务员职务工作的自我评价
2013/11/01 职场文书
物业客服专员岗位职责
2013/11/30 职场文书
导游实习生自荐书
2014/01/28 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle