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执行外部程序的常用方法小结
Mar 21 Python
Python基于pygame实现的font游戏字体(附源码)
Nov 11 Python
python中模块的__all__属性详解
Oct 26 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
ipython和python区别详解
Jun 26 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
pycharm的python_stubs问题
Apr 08 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
django学习之ajax post传参的2种格式实例
May 14 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中Date()时间日期函数的使用方法小结
2011/04/20 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
php创建多级目录的方法
2015/03/24 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
javascript 禁止复制网页
2009/06/11 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
Python中optparser库用法实例详解
2018/01/26 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
青年志愿者事迹材料
2014/02/07 职场文书
小学生家长寄语
2014/04/02 职场文书
银行委托书范本
2014/04/04 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB