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程序的执行效率的教程
Apr 02 Python
Python中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
Python2.x与Python3.x的区别
Jan 14 Python
windows系统下Python环境搭建教程
Mar 28 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
对Python 内建函数和保留字详解
Oct 15 Python
Python装饰器语法糖
Jan 02 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
python重要函数eval多种用法解析
Jan 14 Python
Python中if有多个条件处理方法
Feb 26 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 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
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
package.json配置文件构成详解
2019/08/27 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python绘制七段数码管实例代码
2017/12/20 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python安装selenium包详细过程
2019/07/23 Python
python:动态路由的Flask程序代码
2019/11/22 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
python RSA加密的示例
2020/12/09 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
实习自荐信
2013/10/13 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
设计师求职信
2014/07/01 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
婚礼父母致辞
2015/07/28 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技