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使用线程封装的一个简单定时器类实例
May 16 Python
利用Python的Django框架生成PDF文件的教程
Jul 22 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
python树莓派红外反射传感器
Jan 21 Python
Python笔记之工厂模式
Nov 20 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
python深copy和浅copy区别对比解析
Dec 26 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Python如何使用PIL Image制作GIF图片
May 16 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 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中截取字符串支持utf-8
2007/01/18 PHP
一个数据采集类
2007/02/14 PHP
php checkbox 取值详细说明
2010/08/19 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
详解Angular2组件之间如何通信
2017/06/22 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python 处理数据的实例详解
2017/08/10 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
为什么python比较流行
2020/06/19 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
python调用摄像头的示例代码
2020/09/28 Python
python 制作网站小说下载器
2021/02/20 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
消防安全管理制度
2014/02/01 职场文书
淘宝活动策划方案
2014/02/06 职场文书
爱国主义演讲稿
2014/05/07 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
库房管理员岗位职责
2015/02/12 职场文书