用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获取文件路径、文件名、后缀名的实例
Apr 23 Python
python3转换code128条形码的方法
Apr 17 Python
如何在Django项目中引入静态文件
Jul 26 Python
Django集成celery发送异步邮件实例
Dec 17 Python
Python简单实现区域生长方式
Jan 16 Python
用Python生成HTML表格的方法示例
Mar 06 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 Python
使用Keras中的ImageDataGenerator进行批次读图方式
Jun 17 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
Python实现Excel自动分组合并单元格
Feb 22 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 Python
Python实现视频自动打码的示例代码
Apr 08 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脚本代码
2011/02/19 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
详解js异步文件加载器
2016/01/24 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
python妙用之编码的转换详解
2017/04/21 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python super()函数的基本使用
2020/09/10 Python
Python之Sklearn使用入门教程
2021/02/19 Python
三个儿子教学反思
2014/02/03 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
加强作风建设工作总结
2014/10/23 职场文书
董事长助理岗位职责
2015/02/11 职场文书
车队安全员岗位职责
2015/02/15 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
讲座新闻稿
2015/07/18 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL