tqdm中遇到的問題


1.tqdm是什么?

https://github.com/tqdm/tqdm

簡單來說,就是可以顯示進度條的,它能夠迭代可迭代對象。

然后又測試它是否能用枚舉:

 感覺不行,打印不了進度條了。

2.例子

https://stackoverflow.com/questions/42212810/tqdm-in-jupyter-notebook-prints-new-progress-bars-repeatedly

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上是真的不一樣啊,這是怎么回事呢。這個我先放一放吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM