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获取beautifulphoto随机某图片代码实例
Dec 18 Python
python抓取百度首页的方法
May 19 Python
python数组复制拷贝的实现方法
Jun 09 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
利用Python读取文件的四种不同方法比对
May 18 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python之mock模块基本使用方法详解
Jun 27 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 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查看session内容的函数
2008/08/27 PHP
PHP技术开发技巧分享
2010/03/23 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
python opencv之分水岭算法示例
2018/02/24 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
娱乐地球:Entertainment Earth
2020/01/08 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
软件测试笔试题
2012/10/25 面试题
如何在Shell脚本中使用函数
2015/09/06 面试题
应届毕业生求职信
2014/05/26 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
python异步的ASGI与Fast Api实现
2021/07/16 Python