tqdm模块-进度条

1
2
3
4
5
from tqdm import tqdm
import time

for i in tqdm(range(1000)):
time.sleep(0.01)

效果如下:

1
37%|█████████                     | 370/1000 [00:03<00:06, 98.89it/s]

只要是可迭代的对象都可以使用 tqdm, 例如 PyTorch 的 DataLoader 对象:

1
2
for inputs, labels in tqdm(dataloader):
# ... 输出形式和上面相同

tqdm 不能单行显示的问题

原因: 有些 IDE 不支持回车(CR), 导致每次新的进度条不能覆盖旧的进度条, 出现原因的问题也可能是手动终止进程导致 tqdm 没有完全退出导致的, 应使用 t.close() 使其正确关闭:

1
2
3
4
5
6
7
8
try:
with tqdm(...) as t:
for i in t:
...
except KeyboardInterrupt:
t.close()
raise
t.close()

progressbar

1
2
3
4
5
6
7
8
9
10
11
12
13
import time
from progressbar import *

widgets = ['bar name:', Percentage(), ' ', Bar('#'), ' ', Timer(),
' ', EAT(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets)
try:
for i in pbar(range(1000)):
time.sleep(0.01)
except KeyboardInterrupt:
pbar.finish()
raise
pbar.finish()