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 提取文件的小程序
Jul 29 Python
Python语言编写电脑时间自动同步小工具
Mar 08 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
itchat接口使用示例
Oct 23 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
3种python调用其他脚本的方法
Jan 06 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
python如何查看网页代码
Jun 07 Python
python如何支持并发方法详解
Jul 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计算数组不为空元素个数的方法
2014/01/27 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
js实现微信分享代码
2020/10/11 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
在python的类中动态添加属性与生成对象
2016/09/17 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
django form和field具体方法和属性说明
2020/07/09 Python
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
Looking4Parking美国:全球排名第一的机场停车比较品牌
2019/08/26 全球购物
优秀员工年终发言演讲稿
2014/01/01 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
服务员岗位职责
2015/02/03 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python