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之??碌某?? target=
Sep 12 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
python多线程分块读取文件
Aug 29 Python
TensorFlow实现自定义Op方式
Feb 04 Python
Django 5种类型Session使用方法解析
Apr 29 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 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 csv操作类代码
2009/12/14 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
actionscript与javascript的区别
2011/05/25 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
Python单例模式实例分析
2015/01/14 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Python3实现转换Image图片格式
2018/06/21 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
python gdal安装与简单使用
2019/08/01 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
政府法律服务方案
2014/06/14 职场文书
研究生求职自荐书
2014/06/23 职场文书
红色经典电影观后感
2015/06/18 职场文书
中学教师教学工作总结
2015/08/13 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫