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的函数嵌套的使用方法
Jan 24 Python
Python多线程编程之多线程加锁操作示例
Sep 06 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
python导入不同目录下的自定义模块过程解析
Nov 18 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 Python
python入门之井字棋小游戏
Mar 05 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 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
linux php mysql数据库备份实现代码
2009/03/10 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
Python中random模块用法实例分析
2015/05/19 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
用Python实现随机森林算法的示例
2017/08/24 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
Django操作session 的方法
2020/03/09 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
大学毕业后的十年规划
2014/01/07 职场文书
新护士岗前培训制度
2014/02/02 职场文书
教师个人鉴定材料
2014/02/08 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
成都人事代理协议书
2014/10/25 职场文书
武侯祠导游词
2015/02/04 职场文书