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 yield使用方法示例
Dec 04 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
python机器学习之贝叶斯分类
Mar 26 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
如何完美的建立一个python项目
Oct 09 Python
详解Django中异步任务之django-celery
Nov 05 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
模仿OSO的论坛(一)
2006/10/09 PHP
php计算整个目录大小的方法
2015/06/19 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
python批量处理txt文件的实例代码
2020/01/13 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
公司JAVA开发面试题
2015/04/02 面试题
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
大学同学聚会感言
2015/07/30 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS