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实现baidu hi自动登录的代码
Feb 10 Python
python爬取51job中hr的邮箱
May 14 Python
Python采用Django开发自己的博客系统
Sep 29 Python
python通过cookie模拟已登录状态的初步研究
Nov 09 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
Python文件读写保存操作的示例代码
Sep 14 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
python反转列表的三种方式解析
Nov 08 Python
python2 对excel表格操作完整示例
Feb 23 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP中文乱码解决方案
2015/03/05 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
layui实现数据分页功能
2019/07/27 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
Python+Opencv识别两张相似图片
2020/03/23 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
核心价值观演讲稿
2014/05/13 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
保险公司开门红口号
2014/06/21 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
电频谱管理的原则是什么
2022/02/18 无线电