2.2 循环进度可视化
在Python程序开发时,经常会遇到循环处理的情况,如果循环次数比较多,耗时又比较长的话,通常就没办法得知循环到哪里了,在大循环中等待我想不是一件很好的事情,有时候等不急只能强制停止程序。
如果在循环时可以显示循环的进度,会让人比较安心,至少心里有数。下面介绍两种方法,可以在循环时,在终端显示循环的进度。
覆盖终端中的输出以显示循环进度
import time
counts = 200
for i in range(counts):
percent = (i + 1) * 100 // counts
print('\r', end='')
print(f'进度:{percent}%', end='')
# 下面是循环处理代码
time.sleep(0.05)
进度:100%
通过上面的方法,可以设定每次循环后将输出起点调整到行首,由于后续的进度显示会覆盖掉前面的,所以从视觉效果上看就是看到进度一直在变动,从1%一直到100%。
优点:不需要导入其它模块,并且for语句很灵活。
缺点:循环中不能输出其它内容,并且需要新建percent变量用来显示进度。
使用tqdm库中的trange
from tqdm import trange
from time import sleep
for i in trange(100):
sleep(0.1)
100%|██████████| 100/100 [00:10<00:00, 9.97it/s]
由于是使用了第三方库,这种方法显示效果特别友好,可以显示以下信息:
- 显示进度百分比
- 显示进度条
- 显示总耗时以及倒计时
- 显示每秒处理的循环次数
该方法优点是简单易用,不过缺点就是for语句不灵活,只能从trange中获取循环变量。