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

【Python】输出程序运行的百分比的更多相关文章

  1. Python Virtualenv运行Django环境配置

    系统: RHEL6.5 版本说明: Python-3.5.0 Django-1.10.4 virtualenv:为每个项目建立不同的/独立的Python环境,你将为每个项目安装所有需要的软件包到它们各 ...

  2. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  3. python+selenium运行报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    使用python+selenium运行自动化脚本时,打印某一段文字出现UnicodeEncodeError: 'ascii' codec can't encode characters in posi ...

  4. 解决“无法连接到Python代码运行助手。请检查本机的设置”问题

    廖雪峰老师python课程里有个代码运行助手,可以让你在线输入Python代码,然后通过本机运行的一个Python脚本来执行代码,很方便的一个脚本工具,但是很多人用过之后出现了这样的提示:“无法连接到 ...

  5. python 计算程序运行耗时的好用的代码

    python 计算程序运行耗时的好用的代码: import time start=time.clock() sum=0 for i in range(50): sum=sum+i print(sum) ...

  6. sublime将python的运行结果在命令行显示

    sublime将python的运行结果在命令行显示 为什么这么折腾? 因为每次查看输出结果都要上下拖动窗口,很烦. 将build system修改为 { "cmd": [" ...

  7. Python:Python的运行过程

    1.Python是什么 和Java以及c#一样,Python也是一门基于虚拟机的语言.熟悉Java开发的人在命令行执行一个Java程序的过程通常如下: javac hello.java java he ...

  8. python虚拟机运行原理

    近期为了面试想要了解下python的运行原理方面的东西,奈何关于python没有找到一本类似于深入理解Java虚拟机方面的书籍,找到了一本<python源码剖析>电子书,但是觉得相对来说最 ...

  9. 安装python虚拟运行环境,linux下轻松切换python2和python3

    一.查询系统采用的python版本 $ python --version Python 3.7.3 系统采用的python版本为3.7.3 以下查询py3和py2的目录: $ which python ...

随机推荐

  1. Navicat Premium 连接Oracle登入时候报ORA-12638: 身份证明检索失败的解决办法

    我的电脑是64位,oracle也是64位, plsql客户端是32位,oci连接的是32位 11.2版本: 用plsql 连接本地或远程数据库都没问题.在用 Navicat Premium 连本也没问 ...

  2. CM10 WIFI连不上解决方案

    手机是Moto Mileston2 ,好久之前就刷成了CM10, 但是一直没出问题. 最近,发现在某些路由器上连接不上,总是 在验证账户或者获取IP. 解决办法如下: http://moto.zol. ...

  3. tcpdump 进行抓包

    tcpdump 进行抓包是怎么回事? tcp抓包是怎么搞的?

  4. poj 1523 SPF 求割点以及删除该割点后联通块的数量

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7136   Accepted: 3255 Description C ...

  5. Jenkins+GitHub+maven

    介绍: http://192.168.193.128:8115/jenkins/ 用户名:admin密码:admin电子邮箱:admin@admin.com root/12345678添加新用户: t ...

  6. java8新特性lamda表达式在集合中的使用

    1.利用stream().forEach()循环处理List; List<String> list = Lists.newArrayList();//新建一个List 用的google提供 ...

  7. 只用css3实现菜单的toggle效果

    一.原理: 使用label与input来实现,label和复选框是有关联的,label的for属性对应的是input的id,所以点击label时,它就会勾选或取消复选框. 如果我们需要让菜单默认显示, ...

  8. java面试题之spring aop中jdk和cglib哪个动态代理的性能更好?

    在jdk6和jdk7的时候,jdk比cglib要慢: 在jdk8的时候,jdk性能得到提升比cglib要快很多: 结论出自:https://www.cnblogs.com/xuliugen/p/104 ...

  9. 【NOIP2016练习】T3 subset (分块,状压DP)

    3 subset 3.1 题目  述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 add s 在集合中加入数字 s. del s 在集合中删除数字 s.保证 s 存在 cnt s 查 ...

  10. usb_control_msg参数详解【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-3243059.html usb_control_msg() struct usb_ctrlrequest|- ...