【问题标题】:Loop break breaking tqdm循环中断 tqdm
【发布时间】:2018-08-25 12:49:20
【问题描述】:

以下简单代码使用tqdm 来在循环中迭代时显示进度条:

import tqdm
for f in tqdm.tqdm(range(100000000)):
  if f > 100000000/4:
    break

执行break时失败:

$ python test.py 
 24%|████▎ | 24425076/100000000 [00:03<00:11, 6550673.18it/s]
Exception KeyError: KeyError(<weakref at 0x7fb8799f1158; to 'tqdm' at 0x7fb8799de190>,) in  ignored

我正在使用 Python v2.7.6 和 tq​​dm v4.32.1:

$ python --version
Python 2.7.6
$ python -m tqdm --version
4.23.1

我在 Internet 上查找了类似的错误,但没有得到肯定的结果。

【问题讨论】:

  • 我不使用库,但看起来你是故意突破 25%?进度条应该如何响应?
  • 我试图在一个循环中使用 tqdm,当给定条件为真时可以停止。
  • @roganjosh 发生错误时,您可能希望更新或放弃进度条,而不会发生可能混淆以下逻辑或提供给用户的消息的其他错误。

标签: python tqdm


【解决方案1】:

原来 tqdm 迭代器在中断时必须手动关闭:

import tqdm
iterator = tqdm.tqdm(range(100000000))
for f in iterator:
  if f > 100000000/4:
    iterator.close()
    break

这执行没有问题。

【讨论】:

    猜你喜欢
    • 2018-01-30
    • 2018-06-30
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2013-08-13
    • 2013-02-17
    相关资源
    最近更新 更多