Python实现方便使用的级联进度信息实例


Posted in Python onMay 05, 2015

本文实例讲述了Python实现方便使用的级联进度信息的方法。分享给大家供大家参考。具体实现方法如下:

class StepedProgress:
  '''方便显示进度的级联进度信息。
  '''
  def __init__(self, stockPercent=[1], parentProgress=None):
    self.percent = 0
    self.info = ''
    self.subProgress = []
    self.cur_running_process = 0
    self.stockPercent = stockPercent
    self.parentProgress = parentProgress
    # 重新计算进度比,防止初始化时的值加起来不是1
    w = 0.0
    for p in self.stockPercent:
      w += p
    for i in range(0, len(stockPercent)):
      stockPercent[i] = stockPercent[i]/w
    # 初始化子进度
    if len(stockPercent) == 1:
      self.subProgress = None
    else:
      for p in self.stockPercent:
        self.subProgress.append(StepedProgress(parentProgress=self))
  def subprogress(self, index):
    if index >= self.subcount():
      return self.subProgress[self.subcount()-1]
    elif index < self.cur_running_process:
      return self.subProgress[self.cur_running_process]
    else:
      self.cur_running_process = index
      return self.subProgress[index]
  def subcount(self):
    return len(self.subProgress)
  def notifyParentProgress(self, percent, info=None):
    new_percent = 0.0
    for i in range(0, self.cur_running_process):
      new_percent += self.stockPercent[i]
    new_percent += percent/100.0 * self.stockPercent[self.cur_running_process]
    new_percent *= 100.0
    self.notifyProgress(new_percent, info)
  def notifyProgress(self, percent, info=None):
    if percent > self.percent:
      self.percent = percent
    if info is not None:
      self.info = info
    if self.parentProgress is not None:
      self.parentProgress.notifyParentProgress(percent, info)
    else:
      print self.info[:77].ljust(80, '.'), "[%0.1f%%]"%self.percent
if __name__ == "__main__":
  s = StepedProgress([60, 40])
  s.notifyProgress(10, 'aaa')
  s1 = s.subprogress(0)
  s1.notifyProgress(50, 'bbb')
  s3 = s.subprogress(1)
  s3 = StepedProgress([1, 1], parentProgress=s3.parentProgress) #级联子进度
  s3.notifyProgress(20, 'ddd')
  s4 = s3.subprogress(0)
  s4.notifyProgress(50, 'eee')
  s5 = s3.subprogress(1)
  s5.notifyProgress(50, 'fff')

输出结果:

aaa............................................................................. [10.0%]
bbb............................................................................. [30.0%]
ddd............................................................................. [68.0%]
eee............................................................................. [70.0%]
fff............................................................................. [90.0%]

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python实现定制交互式命令行的方法
Jul 03 Python
python服务器端收发请求的实现代码
Sep 29 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
使用python存储网页上的图片实例
May 22 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
python实现的读取网页并分词功能示例
Oct 29 Python
python 消除 futureWarning问题的解决
Dec 25 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
Python timeit模块原理及使用方法
Oct 10 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 Python
浅析Python OpenCV三种滤镜效果
Apr 11 Python
Python封装shell命令实例分析
May 05 #Python
用Python中的字典来处理索引统计的方法
May 05 #Python
python递归计算N!的方法
May 05 #Python
浅谈Python中数据解析
May 05 #Python
探究Python多进程编程下线程之间变量的共享问题
May 05 #Python
浅谈Python中的数据类型
May 05 #Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 #Python
You might like
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
vue组件间通信解析
2017/03/01 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
机械设计制造专业个人求职信
2013/09/25 职场文书
在校生党员自我评价
2013/09/25 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript