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 threading多线程编程实例
Sep 18 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
python 字典操作提取key,value的方法
Jun 26 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
使用Python实现分别输出每个数组
Dec 06 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
Python实现播放和录制声音的功能
Aug 12 Python
python中random.randint和random.randrange的区别详解
Sep 20 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 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中的 == 运算符进行字符串比较
2006/11/26 PHP
php 无法载入mysql扩展
2010/03/12 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
PHP中list方法用法示例
2016/12/01 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
Python os模块介绍
2014/11/30 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
python脚本第一行如何写
2020/08/30 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
二年级数学教学反思
2014/01/21 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang