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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
python找出完数的方法
Nov 12 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
用Python开发app后端有优势吗
Jun 29 Python
解决pytorch-gpu 安装失败的记录
May 24 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
玩转虚拟域名◎+ .
2006/10/09 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
CSS常用网站布局实例
2008/04/03 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Python换行与不换行的输出实例
2020/02/19 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
大学毕业后的十年规划
2014/01/07 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
教师节倡议书
2014/08/30 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
图解上海144收音机
2021/04/22 无线电
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS