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和GO语言实现的消息摘要算法示例
Mar 10 Python
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
Windows下安装Scrapy
Oct 17 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
实现Python与STM32通信方式
Dec 18 Python
解决python gdal投影坐标系转换的问题
Jan 17 Python
Python中for后接else的语法使用
May 18 Python
Python深度学习之Pytorch初步使用
May 20 Python
只用40行Python代码就能写出pdf转word小工具
May 31 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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文件上传类分享
2016/05/15 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
python实现贪吃蛇小游戏
2020/03/21 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
python从PDF中提取数据的示例
2020/10/30 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
毕业生就业自荐书
2013/12/15 职场文书
社区活动总结报告
2014/05/05 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
使用python求解迷宫问题的三种实现方法
2022/03/17 Python