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编程实现粒子群算法(PSO)详解
Nov 13 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
python调用摄像头拍摄数据集
Jun 01 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python实现TCP通信的示例代码
Sep 09 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
php 函数中使用static的说明
2012/06/01 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python调用外部程序的实操步骤
2019/03/04 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
PHP开发的一般流程
2013/08/13 面试题
大学毕业通用个人的求职信
2013/12/08 职场文书
监理资料员岗位职责
2014/01/03 职场文书
施工班组长岗位职责
2014/01/05 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
活动经费申请报告
2015/05/15 职场文书
最美乡村教师观后感
2015/06/11 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js