Python进度条实时显示处理进度的示例代码


Posted in Python onJanuary 30, 2018

前言

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

如何使用这个类

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

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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
Python进程间通信用法实例
Jun 04 Python
python导出hive数据表的schema实例代码
Jan 22 Python
Python脚本完成post接口测试的实例
Dec 17 Python
详解Python字典的操作
Mar 04 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
python实现人工智能Ai抠图功能
Sep 05 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
Python3基于print打印带颜色字符串
Jul 06 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 Python
关于python中模块和重载的问题
Nov 02 Python
Python3生成手写体数字方法
Jan 30 #Python
python字符串的方法与操作大全
Jan 30 #Python
Python实现带参数与不带参数的多重继承示例
Jan 30 #Python
Python实现的随机森林算法与简单总结
Jan 30 #Python
Python决策树和随机森林算法实例详解
Jan 30 #Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 #Python
python使用Tkinter实现在线音乐播放器
Jan 30 #Python
You might like
php json相关函数用法示例
2017/03/28 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
es6学习之解构时应该注意的点
2017/08/29 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
Python深入学习之对象的属性
2014/08/31 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python 调用c语言函数的方法
2017/09/29 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Python timeit模块的使用实践
2020/01/13 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
财政局长自荐信范文
2013/12/22 职场文书
体育专业个人求职信范文
2013/12/27 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
酒桌上的开场白
2015/06/01 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python