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 相关文章推荐
通过数据库向Django模型添加字段的示例
Jul 21 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
Python分析学校四六级过关情况
Nov 22 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 Python
Python实现代码统计工具
Sep 19 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
python 实现两个npy档案合并
Jul 01 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
PyTorch中permute的使用方法
Apr 26 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
2016春季田径运动会广播稿
2015/12/21 职场文书
《社戏》教学反思
2016/02/22 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL