博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python】输出程序运行的百分比
阅读量:6423 次
发布时间:2019-06-23

本文共 1078 字,大约阅读时间需要 3 分钟。

对于一些大型的Python程序。我们须要在命令行输出其百分比,显得更加友好,以免被人误会程序陷入死循环、假死的窗口。

关键是利用到不换行的输出符\r,\r的输出。将直接覆盖掉此行的内容。

比方例如以下的程序,是一个i从0自加的十万的过程,即使对于如今高性能的CPU也是须要几秒的时间的,我们要输出其运行时候的百分比,能够在引入sys这个包之后。利用到sys.stdout.write输出。避免原生态的print自带的\n影响大局。

同一时候要控制百分比的小数位为4。

程序运行的百分比恰好为i当前的值除以值为十万的total。

#-*-coding:utf-8-*-import sys;total=100000for 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=100000for 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依旧是处理成换行符,使得输出变成例如以下的样子。这里没有办法了!

你可能感兴趣的文章