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文件处理
Feb 29 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
python opencv 直方图反向投影的方法
Feb 24 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Python2包含中文报错的解决方法
Jul 09 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Python多进程编程常用方法解析
Mar 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
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
YII框架常用技巧总结
2019/04/27 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
JSON JQUERY模板实现说明
2010/07/03 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
讲解python参数和作用域的使用
2013/11/01 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
详解Python的三种可变参数
2019/05/08 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
社区母亲节活动记录
2014/03/06 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
python基础之文件处理知识总结
2021/05/23 Python
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js