Python实现输出程序执行进度百分比的方法


Posted in Python onSeptember 16, 2017

本文实例讲述了Python实现输出程序执行进度百分比的方法。分享给大家供大家参考,具体如下:

对于一些大型的Python程序,我们需要在命令行输出其百分比,显得更加友好,以免被人误会程序陷入死循环、假死的窗体。
关键是利用到不换行的输出符\r,\r的输出,将直接覆盖掉此行的内容。

比如如下的程序,是一个i从0自加的十万的过程,即使对于现在高性能的CPU也是需要几秒的时间的,我们要输出其执行时候的百分比,可以在引入sys这个包之后,利用到sys.stdout.write输出,避免原生态的print自带的\n影响大局。同时要控制百分比的小数位为4。程序执行的百分比恰好为i当前的值除以值为十万的total。

#-*-coding:utf-8-*-
import sys;
total=100000
for i in range(0,total):
  percent=float(i)*100/float(total)
  sys.stdout.write("%.4f"%percent);
  sys.stdout.write("%\r");
  sys.stdout.flush();
sys.stdout.write("100%!finish!\r");
sys.stdout.flush();

程序运行结果如下:

Python实现输出程序执行进度百分比的方法

但是,这里i每自增一次就要求当前的运行的百分比,把原本100000次的浮点运算徒然增加到二十万次,同时要刷新100000次的屏幕,非常不合理,因此对于程序,可以做如下的改进,运行百分比仅保留2位小数,同时i每累积100才进行百分比输出,程序修改之后如下:

#-*-coding:utf-8-*-
import sys;
total=100000
for i in range(0,total):
  if i%100==0:
    percent=float(i)*100/float(total)
    sys.stdout.write("%.2f"%percent);
    sys.stdout.write("%\r");
    sys.stdout.flush();
sys.stdout.write("100%!finish!\r");
sys.stdout.flush();

从求运行百分比的100000次的浮点运算改为100000次的条件运算,同时仅要刷新屏幕1000次,程序的运行耗时将大大减少。

同时,这里值得注意的是,Eclipse中的Pydev中的控制台,对于\r依然是处理成换行符,使得输出变成如下的样子,这里没有办法了!

Python实现输出程序执行进度百分比的方法

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

Python 相关文章推荐
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
python类的继承实例详解
Mar 30 Python
matplotlib中legend位置调整解析
Dec 19 Python
python实现梯度下降算法
Mar 24 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
python验证码图片处理(二值化)
Nov 01 Python
Python类的动态绑定实现原理
Mar 21 Python
python 线程的五个状态
Sep 22 Python
Python可视化学习之seaborn调色盘
Feb 24 Python
Python实现求笛卡尔乘积的方法
Sep 16 #Python
轻松理解Python 中的 descriptor
Sep 15 #Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 #Python
python中reload(module)的用法示例详解
Sep 15 #Python
Python 关于反射和类的特殊成员方法
Sep 14 #Python
在Python中执行系统命令的方法示例详解
Sep 14 #Python
关于Python如何避免循环导入问题详解
Sep 14 #Python
You might like
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python3计算三角形的面积代码
2017/12/18 Python
对Python3中的input函数详解
2018/04/22 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
Python如何调用外部系统命令
2019/08/07 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
flask实现验证码并验证功能
2019/12/05 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
SQL面试题
2013/12/09 面试题
如何开启linux的ssh服务
2015/02/14 面试题
90后毕业生的求职信范文
2013/09/21 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
党员教师工作决心书
2014/03/13 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL