4 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個贊
您可以在創(chuàng)建進(jìn)度條時使用離開參數(shù)。像這樣:
import time
from tqdm import tqdm
for i in tqdm(range(3)):
for j in tqdm(range(5), leave=bool(i == 2)):
time.sleep(1)

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個贊
您可以通過每次在內(nèi)部循環(huán)開始之前重置進(jìn)度條對象來實(shí)現(xiàn)此目的。
請嘗試以下代碼以獲得所需的結(jié)果。
import time
from tqdm.notebook import tqdm
#initializing progress bar objects
outer_loop=tqdm(range(3))
inner_loop=tqdm(range(5))
for i in range(len(outer_loop)):
inner_loop.refresh() #force print final state
inner_loop.reset() #reuse bar
outer_loop.update() #update outer tqdm
for j in range(len(inner_loop)):
inner_loop.update() #update inner tqdm
time.sleep(1)
輸出:

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個贊
我更喜歡@anton-波米申科的答案。然而,如前所述,每次外部條形更新時,內(nèi)部條形都會消失并重新出現(xiàn),如果它快速而頻繁地發(fā)生,這可能會看起來很糟糕。
正確答案(假設(shè)您不需要重用外部欄,但確實(shí)要重用內(nèi)部欄):
from time import sleep
from tqdm.auto import tqdm
with tqdm(range(3)) as outer:
inner_total = 3
with tqdm(total=inner_total) as inner:
for i in outer:
inner.reset(inner_total) # reinitialise without clearing
for j in range(inner_total):
sleep(1)
inner.update()
inner.refresh() # print last state without clearing

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個贊
import time
from tqdm.auto import tqdm
#initializing progress bar objects
outer_loop=tqdm(range(3))
mid_loop=tqdm(range(5))
inner_loop=tqdm(range(7))
for i in range(len(outer_loop)):
mid_loop.refresh() #force print final state
mid_loop.reset() #reuse bar
outer_loop.update() #update outer tqdm
for j in range(len(mid_loop)):
inner_loop.refresh() #force print final state
inner_loop.reset() #reuse bar
mid_loop.update() ##update mid tqdm
for k in range(len(inner_loop)):
inner_loop.update() #update inner tqdm
time.sleep(1)
print(i,j,k)
請?jiān)谙旅嬲业捷敵觯?/p>
這也是github上問題的答案
謝謝 & 最好的問候
邁克爾
添加回答
舉報