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将图片文件转换成base64编码的方法
Mar 14 Python
在Python中操作列表之List.pop()方法的使用
May 21 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
python中的二维列表实例详解
Jun 19 Python
python+pyqt5实现24点小游戏
Jan 24 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
python3 xpath和requests应用详解
Mar 06 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
Python使用windows设置定时执行脚本
Nov 12 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动态生成JavaScript代码
2009/03/09 PHP
php Static关键字实用方法
2010/06/04 PHP
PHP模块化安装教程
2016/06/01 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
前端性能优化及技巧
2016/05/06 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
自荐信包含哪些内容
2013/10/30 职场文书
同学聚会主持词
2014/03/18 职场文书
欢迎领导标语
2014/06/27 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2015年电教工作总结
2015/05/26 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python