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时间戳与时间字符串互相转换实例代码
Nov 28 Python
python time模块用法实例详解
Sep 11 Python
介绍Python中内置的itertools模块
Apr 29 Python
浅谈MySQL中的触发器
May 05 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
Python如何实现转换URL详解
Jul 02 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
Feb 21 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
python右对齐的实例方法
Jul 05 Python
编写python代码实现简单抽奖器
Oct 20 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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
深入理解NumPy简明教程---数组2
2016/12/17 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
连锁酒店店长职责范本
2014/02/13 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
大客户经理岗位职责
2015/04/09 职场文书
开展警示教育活动总结
2015/05/09 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
因个人工作失误检讨书
2019/06/21 职场文书