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根据距离和时长计算配速示例
Feb 16 Python
详解Python使用simplejson模块解析JSON的方法
Mar 24 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
PYTHON基础-时间日期处理小结
May 05 Python
Django实现全文检索的方法(支持中文)
May 14 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 Python
python getpass模块用法及实例详解
Oct 07 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 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 xml文件操作代码(一)
2009/03/20 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
Javascript学习指南
2014/12/01 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
JavaScript插件化开发教程(六)
2015/02/01 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
python使用Berkeley DB数据库实例
2014/09/26 Python
Python单例模式实例分析
2015/01/14 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
python 实现dict转json并保存文件
2019/12/05 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
html5 标签
2009/07/16 HTML / CSS
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
家教广告词
2014/03/19 职场文书
开业主持词
2014/03/21 职场文书
毕业欢送会致辞
2015/07/29 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python