【Python】输出程序运行的百分比
2024-09-05 07:40:50
对于一些大型的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();
程序执行结果例如以下:
可是,这里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依旧是处理成换行符,使得输出变成例如以下的样子。这里没有办法了!
最新文章
- vSphere6提示已弃用VMFS卷的解决方法
- php代码查询apache模块
- java实现文件传输
- href与src 区别
- 标准Http协议的六种请求方法详解
- 从源码看JDK提供的线程池(ThreadPoolExecutor)
- scala的多种集合的使用(1)之集合层级结构与分类
- nginx基础之【study one】
- 【win7】安装开发环境
- apache+php+mysql安装与使用
- 51nod1079 poj2891 中国剩余定理与其扩展
- HBase脚本命令
- Qt与PyQT中设置ToolBar在AllowedArea的显示
- CSU 1803 - 2016 - [同余]
- INSERT高级应用
- 修复支付宝后台报错session IP change to many
- 利用 Android 系统原生 API 实现分享功能
- ORACLE修改表空间方法
- JS判断当前DOM树是否加载完毕
- 【51NOD-0】1058 N的阶乘的长度
热门文章
- 让boostrap的图片轮播支持滑动效果
- 2016-2017 ACM Central Region of Russia Quarterfinal Programming Contest BHanoi tower
- 项目记事【Hibernate-1】:调用 saveOrUpdate() 方法出错
- C++之Effective STL学习笔记Item14
- 【bzoj2338】[HNOI2011]数矩形 计算几何
- 【bzoj3261】最大异或和 可持久化Trie树
- 【bzoj3751】[NOIP2014]解方程 数论
- NOJ——1672剪绳子(博弈)
- C# 打印webBrowser打开的页面
- Django时区配置:有次发现缓存的时间总是有问题,原来是时区配置需要改