Python实现采用进度条实时显示处理进度的方法


Posted in Python onDecember 19, 2017

本文实例讲述了Python实现采用进度条实时显示处理进度的方法。分享给大家供大家参考,具体如下:

前言

在大多数时候,我们的程序会一直进行循环处理。这时候,我们非常希望能够知道程序的处理进度,由此来决定接下来该做些什么。接下来告诉大家如何简单又漂亮的实现这一功能。

如何使用这个类

使用这个类很简单,只需要三步即可完成,如下:

process_bar = ShowProcess(max_steps) # 1.在循环前定义类的实体, max_steps是总的步数
for i in range(max_steps + 1):
  process_bar.show_process()   # 2.显示当前进度
  time.sleep(0.05)
process_bar.close('done')      # 3.处理结束后显示消息

进度条的实现

由于很简单,直接上代码

#!/usr/local/lib
# -*- coding: UTF-8 -*-
import sys, time
class ShowProcess():
  """
  显示处理进度的类
  调用该类相关函数即可实现处理进度的显示
  """
  i = 0 # 当前的处理进度
  max_steps = 0 # 总共需要处理的次数
  max_arrow = 50 #进度条的长度
  # 初始化函数,需要知道总共的处理次数
  def __init__(self, max_steps):
    self.max_steps = max_steps
    self.i = 0
  # 显示函数,根据当前的处理进度i显示进度
  # 效果为[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00%
  def show_process(self, i=None):
    if i is not None:
      self.i = i
    else:
      self.i += 1
    num_arrow = int(self.i * self.max_arrow / self.max_steps) #计算显示多少个'>'
    num_line = self.max_arrow - num_arrow #计算显示多少个'-'
    percent = self.i * 100.0 / self.max_steps #计算完成进度,格式为xx.xx%
    process_bar = '[' + '>' * num_arrow + '-' * num_line + ']'\
           + '%.2f' % percent + '%' + '\r' #带输出的字符串,'\r'表示不换行回到最左边
    sys.stdout.write(process_bar) #这两句打印字符到终端
    sys.stdout.flush()
  def close(self, words='done'):
    print ''
    print words
    self.i = 0
if __name__=='__main__':
  max_steps = 100
  process_bar = ShowProcess(max_steps)
  for i in range(max_steps + 1):
    process_bar.show_process()
    time.sleep(0.05)
  process_bar.close()

运行

按照主函数的方法调用此类即可,显示效果如下:

[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00%
done

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现2048小游戏
Mar 30 Python
pygame学习笔记(2):画点的三种方法和动画实例
Apr 15 Python
Python简单实现enum功能的方法
Apr 25 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
pytorch之添加BN的实现
Jan 06 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 #Python
分析python切片原理和方法
Dec 19 #Python
python实现redis三种cas事务操作
Dec 19 #Python
Python2/3中urllib库的一些常见用法
Dec 19 #Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 #Python
Python random模块用法解析及简单示例
Dec 18 #Python
Python方法的延迟加载的示例代码
Dec 18 #Python
You might like
php获取操作系统语言代码
2013/11/04 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
十大使用PHP框架的理由
2015/09/26 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
php实现生成验证码实例分享
2016/04/10 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
python实现统计代码行数的方法
2015/05/22 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
机电专业个人自荐信格式模板
2013/09/23 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
毕业典礼致辞
2015/07/29 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript