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实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
python中的常量和变量代码详解
Jul 25 Python
python八皇后问题的解决方法
Sep 27 Python
python实现大量图片重命名
Mar 23 Python
Python中常用的高阶函数实例详解
Feb 21 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
Pythonic版二分查找实现过程原理解析
Aug 11 Python
Python实现给PDF添加水印的方法
Jan 25 Python
Python实现微信表情包炸群功能
Jan 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
美国滑板店:Tactics
2020/11/08 全球购物
幼儿园实习自我鉴定
2013/12/15 职场文书
元旦促销方案
2014/03/15 职场文书
推销搭讪开场白
2015/05/28 职场文书
中秋节晚会开场白
2015/05/29 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
信息技术研修心得体会
2016/01/08 职场文书
小学思品教学反思
2016/02/20 职场文书
如何书写邀请函?
2019/06/24 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Python的三个重要函数详解
2022/01/18 Python