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基于右递归解决八皇后问题的方法
May 25 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
关于tf.reverse_sequence()简述
Jan 20 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
什么是python的id函数
Jun 11 Python
MATLAB数学建模之画图汇总
Jul 16 Python
django如何自定义manage.py管理命令
Apr 27 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
将数组写入txt文件 var_export
2009/04/21 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
Jquery cookie操作代码
2010/03/14 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
React快速入门教程
2017/01/17 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
python中类的一些方法分析
2014/09/25 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
毕业生个人的求职信范文
2013/12/03 职场文书
劳动竞赛口号
2014/06/16 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
昆虫记读书笔记
2015/06/26 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android