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实现socket端口重定向示例
Feb 10 Python
Python实现高效求解素数代码实例
Jun 30 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
Django中的cookie和session
Aug 27 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
Python连接mysql方法及常用参数
Sep 01 Python
python 实用工具状态机transitions
Nov 21 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/10/09 PHP
php curl基本操作详解
2013/07/23 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
Python实现购物车购物小程序
2018/04/18 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python如何求解两数的最大公约数
2018/09/27 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
销售自荐信
2013/10/22 职场文书
农民入党思想汇报
2014/01/03 职场文书
2015入党自荐书范文
2015/03/05 职场文书
导游词之张家界
2019/10/31 职场文书
Nginx利用Logrotate实现日志分割
2022/05/20 Servers