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自然语言编码转换模块codecs介绍
Apr 08 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 Python
python 美化输出信息的实例
Oct 15 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
利用ctypes获取numpy数组的指针方法
Feb 12 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
基于Tensorflow一维卷积用法详解
May 22 Python
Pytorch转onnx、torchscript方式
May 25 Python
python 模拟登陆github的示例
Dec 04 Python
python字典按照value排序方法
Dec 28 Python
pytorch DataLoader的num_workers参数与设置大小详解
May 28 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正则验证Email的方法
2015/06/15 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
python如何实现视频转代码视频
2019/06/17 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
如何将json数据转换为python数据
2020/09/04 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
刑事撤诉申请书
2015/05/18 职场文书
安全教育日主题班会
2015/08/13 职场文书
合同范本之电脑出租
2019/08/13 职场文书
五年级作文之想象作文
2019/10/30 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js