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网络编程学习笔记(一)
Jun 09 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
详解python校验SQL脚本命名规则
Mar 22 Python
解决Python对齐文本字符串问题
Aug 28 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
python 统计代码耗时的几种方法分享
Apr 02 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的autoload自动加载机制使用说明
2010/12/28 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
利用javascript查看html源文件
2006/11/08 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
python提取内容关键词的方法
2015/03/16 Python
python任务调度实例分析
2015/05/19 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
python实现简单日期工具类
2019/04/24 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python的缺点和劣势分析
2019/11/19 Python
Python列表如何更新值
2020/05/27 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
估算杭州有多少软件工程师
2015/08/11 面试题
如何开启linux的ssh服务
2013/06/03 面试题
中软国际Java程序员机试题
2012/08/19 面试题
2015年重阳节主持词
2015/07/04 职场文书