1.tqdm是什么?
簡單來說,就是可以顯示進度條的,它能夠迭代可迭代對象。
然后又測試它是否能用枚舉:
感覺不行,打印不了進度條了。
2.例子
from time import sleep from tqdm import tqdm values = range(3) with tqdm(total=len(values)) as pbar: for i in values: pbar.write('processed: %d' %i) print('++++++++++\n') pbar.update(1)
輸出:
0%| | 0/3 [00:00<?, ?it/s] processed: 0 0%| | 0/3 [00:00<?, ?it/s]++++++++++ processed: 1 33%|███▎ | 1/3 [00:00<00:00, 11.57it/s]++++++++++ 67%|██████▋ | 2/3 [00:00<00:00, 17.25it/s] processed: 2 67%|██████▋ | 2/3 [00:00<00:00, 17.25it/s]++++++++++ 100%|██████████| 3/3 [00:00<00:00, 16.98it/s]
為什么上面0/2會出現重復呢?
但是在jupyter中就可以發現,它是非常正常的:
如果將tqdm修改為trange的話,輸出也同樣會有偶數的重復:
with trange(len(values)) as pbar:
輸出:
0%| | 0/3 [00:00<?, ?it/s] processed: 0 0%| | 0/3 [00:00<?, ?it/s]++++++++++ processed: 1 33%|███▎ | 1/3 [00:00<00:00, 11.52it/s]++++++++++ 67%|██████▋ | 2/3 [00:00<00:00, 17.75it/s] processed: 2 67%|██████▋ | 2/3 [00:00<00:00, 17.75it/s]++++++++++ 100%|██████████| 3/3 [00:00<00:00, 18.68it/s]
同樣在jupyter中也是非常正常的,是否是stdout和stderr的問題?
上面鏈接中有關於stdout和stderr的,我真的不太明白。
with tqdm(total=len(values),file=sys.stdout) as pbar:
如果添加到這一句的話,file進行重定向到stdout,那么輸出就是藍色的,不加的話輸出就是紅色的!
在idle上和jupyter上是真的不一樣啊,這是怎么回事呢。這個我先放一放吧。