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 09 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
python3中set(集合)的语法总结分享
Mar 24 Python
利用python实现简单的邮件发送客户端示例
Dec 23 Python
python爬取m3u8连接的视频
Feb 28 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
FFrpc python客户端lib使用解析
Aug 24 Python
Python flask路由间传递变量实例详解
Jun 03 Python
如何真正的了解python装饰器
Aug 14 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
Python实现单例模式的5种方法
Jun 15 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简单实现查询数据库返回json数据
2015/04/16 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
js实现简单图片拖拽效果
2021/02/22 Javascript
Python实现类继承实例
2014/07/04 Python
Python入门篇之字符串
2014/10/17 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
python装饰器深入学习
2018/04/06 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
浅谈django orm 优化
2018/08/18 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
几款好用的python工具库(小结)
2020/10/20 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
Java语言程序设计测试题改错题部分
2014/07/22 面试题
个人自我鉴定范文
2013/10/04 职场文书
优秀员工自荐书范文
2013/12/08 职场文书
关于迟到的检讨书
2014/01/26 职场文书
父母对孩子说的话
2014/04/12 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
房租涨价通知
2015/04/23 职场文书
法定代表人身份证明书
2015/06/18 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL