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创建文件和追加文件内容实例
Oct 21 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
python getopt详解及简单实例
Dec 30 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python语言描述最大连续子序列和
Dec 05 Python
Python tkinter事件高级用法实例
Jan 31 Python
对python中的xlsxwriter库简单分析
May 04 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
详解Python3 pandas.merge用法
Sep 05 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
Python实现寻找回文数字过程解析
Jun 09 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&mysql(二)
2006/10/09 PHP
NOT NULL 和NULL
2007/01/15 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
php实现可运算的验证码
2015/11/10 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
用Python编写简单的定时器的方法
2015/05/02 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
《动手做做看》教学反思
2014/04/09 职场文书
青春励志演讲稿
2014/04/29 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
房贷工资证明范本
2015/06/12 职场文书
获奖感言怎么写
2015/07/31 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers