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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
python3调用R的示例代码
Feb 23 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
Keras - GPU ID 和显存占用设定步骤
Jun 22 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
Python扫描端口的实现
Jan 25 Python
详解Python中__new__方法的作用
Mar 31 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
php网页后退不再出现过期
2007/03/08 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
jQuery 选择器详解
2015/01/19 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
大一自我鉴定范文
2013/10/04 职场文书
单位员工收入证明样本
2014/10/09 职场文书
道歉情书大全
2015/05/12 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
Elasticsearch 聚合查询和排序
2022/04/19 Python
处理canvas绘制图片模糊问题
2022/05/11 Javascript