对于一些大型的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依旧是处理成换行符,使得输出变成例如以下的样子。这里没有办法了!

最新文章

  1. vSphere6提示已弃用VMFS卷的解决方法
  2. php代码查询apache模块
  3. java实现文件传输
  4. href与src 区别
  5. 标准Http协议的六种请求方法详解
  6. 从源码看JDK提供的线程池(ThreadPoolExecutor)
  7. scala的多种集合的使用(1)之集合层级结构与分类
  8. nginx基础之【study one】
  9. 【win7】安装开发环境
  10. apache+php+mysql安装与使用
  11. 51nod1079 poj2891 中国剩余定理与其扩展
  12. HBase脚本命令
  13. Qt与PyQT中设置ToolBar在AllowedArea的显示
  14. CSU 1803 - 2016 - [同余]
  15. INSERT高级应用
  16. 修复支付宝后台报错session IP change to many
  17. 利用 Android 系统原生 API 实现分享功能
  18. ORACLE修改表空间方法
  19. JS判断当前DOM树是否加载完毕
  20. 【51NOD-0】1058 N的阶乘的长度

热门文章

  1. 让boostrap的图片轮播支持滑动效果
  2. 2016-2017 ACM Central Region of Russia Quarterfinal Programming Contest BHanoi tower
  3. 项目记事【Hibernate-1】:调用 saveOrUpdate() 方法出错
  4. C++之Effective STL学习笔记Item14
  5. 【bzoj2338】[HNOI2011]数矩形 计算几何
  6. 【bzoj3261】最大异或和 可持久化Trie树
  7. 【bzoj3751】[NOIP2014]解方程 数论
  8. NOJ——1672剪绳子(博弈)
  9. C# 打印webBrowser打开的页面
  10. Django时区配置:有次发现缓存的时间总是有问题,原来是时区配置需要改