对于一些大型的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. C++ 指针的小知识

    看个小例子: char* fun1(){ char * p = (char*)malloc(100); p = "helloww"; return p;} void fun2(ch ...

  2. Selenium WebDriver-通过断言页面是否存在某些关键字来确定页面按照预期加载

    #encoding=utf-8 import unittest import time import chardet from selenium import webdriver class Visi ...

  3. day03_07 变量的重新赋值01

    在cmd中退出python,需要使用quit()命令 name = "Alex Li" name2 = name print(name,name2) name = "Ja ...

  4. 【mysql 优化 4】嵌套连接优化

    原文地址:Nested Join Optimization 与SQL标准相比,table_factor的语法被扩展.后者仅接受table_reference,而不是一对括号内的列表.如果我们将tabl ...

  5. 【java基础 14】锁的粒度:ThreadLocal、volatile、Atomic和Synchronized

    导读:题目中提到的几个关键字,分别是解决并发问题中,加锁所使用到的几个关键字,每个关键字代表的锁的粒度 不同,本篇博客,主要是从概念定义上,区分这几个关键字的应用场景.(PS:睡梦中,依稀记得有回面试 ...

  6. IE7中a标签包含img,点击img,链接失效的bug

    在做列表时,我们经常会这样写: <ul class="works-list"> <li> <a href=""> <d ...

  7. 【bzoj1406】 AHOI2007密码箱 数论

    在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子背面刻着的古代图标,就是对密码的提示.经过艰苦的破译,小可可发现,这些图标表示一个数 ...

  8. python hashlib模块 logging模块 subprocess模块

    一 hashlib模块 import hashlib md5=hashlib.md5() #可以传参,加盐处理 print(md5) md5.update(b'alex') #update参数必须是b ...

  9. 洛谷 [P3629] 巡逻

    树的直径 树的直径有两种求法 1.两遍 dfs 法, 便于输出具体方案,但是无法处理负权边 2.DP 法,代码量少,可以处理负权边 #include <iostream> #include ...

  10. es6总结(六)--新数据类型-Symbol