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的*args和**kwargs用法
Nov 01 Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 Python
python构建深度神经网络(DNN)
Mar 10 Python
Django基础知识与基本应用入门教程
Jul 20 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
在PyCharm下打包*.py程序成.exe的方法
Nov 29 Python
自学python的建议和周期预算
Jan 30 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
重构Python代码的六个实例
Nov 25 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
PHP添加Xdebug扩展的方法
2014/02/12 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
Python中内置的日志模块logging用法详解
2016/07/12 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
森林防火宣传标语
2014/06/27 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
Pandas-DataFrame知识点汇总
2022/03/16 Python