【问题标题】:resetting tqdm progress bar重置 tqdm 进度条
【发布时间】:2019-07-09 12:51:01
【问题描述】:

我想重置一个 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()

但效果不好。

【问题讨论】:

    标签: python-3.x tqdm


    【解决方案1】:

    当包装一个可迭代对象时,tqdm 将在可迭代对象耗尽时close() 条形图。这意味着重用 (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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我不想创建一个新的。我有一些我想保留的信息(描述等)。有可能吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多