Python实现输出程序执行进度百分比的方法

yipeiwu_com7年前Python基础

本文实例讲述了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();

程序运行结果如下:

但是,这里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函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

利用python库在局域网内传输文件的方法

1.电脑已经搭建python环境 2.深入到需要传输的文件目录下,此处以分享 nemo-huiyuanfei 文件为例 3.在路径栏输入 cmd 按回车进入终端 4.输入命令 pytho...

Python实现MySQL操作的方法小结【安装,连接,增删改查等】

本文实例讲述了Python实现MySQL操作的方法。分享给大家供大家参考,具体如下: 1. 安装MySQLdb.从网站下载Mysql for python 的package 注意有32位...

Python+selenium实现自动循环扔QQ邮箱漂流瓶

本文实例为大家分享了Python自动循环扔QQ邮箱漂流瓶的具体代码,供大家参考,具体内容如下 Python代码如下: # coding=utf-8 from selenium imp...

pywinauto自动化操作记事本

一、什么是pywinauto Pywinauto是基于Python开发的,用于操作Windows标准图形界面的自动化测试的脚本模块。 二、pywinauto可以用来做什么 1.可以应用在...

pycharm打开命令行或Terminal的方法

pycharm打开命令行或Terminal的方法

见图---pycharm左下角点击,就会发现 以上这篇pycharm打开命令行或Terminal的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-...