4 回答

TA贡献1820条经验 获得超3个赞
您可以在创建进度条时使用离开参数。像这样:
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贡献1866条经验 获得超5个赞
您可以通过每次在内部循环开始之前重置进度条对象来实现此目的。
请尝试以下代码以获得所需的结果。
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贡献1900条经验 获得超5个赞
我更喜欢@anton-波米申科的答案。然而,如前所述,每次外部条形更新时,内部条形都会消失并重新出现,如果它快速而频繁地发生,这可能会看起来很糟糕。
正确答案(假设您不需要重用外部栏,但确实要重用内部栏):
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贡献1829条经验 获得超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)
请在下面找到输出:
这也是github上问题的答案
谢谢 & 最好的问候
迈克尔
添加回答
举报