重置tqdm进度栏

时间:2019-07-09 12:51:01

标签: python-3.x tqdm

我想重置一个tqdm进度栏。

这是我的代码:

s = tqdm(range(100))
for x in s:
    pass

# Reset it here
s.reset(0)

for x in s:
    pass

Tqdm PB仅适用于第一个循环。我尝试使用.reset(0)函数将其重置,但无法正常工作。

以上代码的输出为:

100%|██████████| 100/100 [00:00<?, ?it/s]

我注意到他们在这里使用:Restting progress bar counter此代码

pbar.n = 0
pbar.refresh()

但是它不能正常工作。

2 个答案:

答案 0 :(得分:1)

在包装可迭代项时,tqdmclose()限制在可迭代项耗尽时。这意味着重用({refresh()等)将不起作用。您可以手动解决问题:

from tqdm import tqdm
s = range(100)
t = tqdm(total=len(s))
for x in s:
    t.update()
t.refresh()  # force print final state

t.reset()  # reuse bar
for x in s:
    t.update()
t.close()  # close the bar permanently

答案 1 :(得分:0)

尝试仅在旧的进度条上创建一个新的进度条。此后,垃圾收集器将处理旧的垃圾回收器,一旦代码中不再引用它,则将其从内存中移出。

s = tqdm(range(100))
for x in s:
    pass

# reset it here
s = tqdm(range(100))
for x in s:
    pass