首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tqdm色条显示红色,如果在木星笔记本中使用中断。

tqdm色条显示红色,如果在木星笔记本中使用中断。
EN

Stack Overflow用户
提问于 2022-03-17 18:31:45
回答 1查看 768关注 0票数 2

我使用来自tqdm.notebooktqdm.notebook来显示通过文件行进行迭代的进度条。我提供total参数来给出将要执行的迭代次数(因为我预先知道),这样就可以准确地显示进度。

我使用break在所需的最大迭代次数(要读取的文件行)处停止。

尽管执行的迭代次数等于tqdm中提供给tqdm的值,进度条显示已经执行的最大迭代次数(例如,示例中的11/11;参见图像),但该条以红色(而不是绿色)显示,表示过早终止/错误。

我已经尝试将tqdm对象分配给一个变量,并在中断之前按照this related question显式关闭迭代器。

如何使进度条正确显示?

代码语言:javascript
复制
from tqdm.notebook import tqdm
LETTERS = list('ABCDEFGHIJKL')
for idx, letter in enumerate(tqdm(LETTERS, total=len(LETTERS)-1)):
    print(letter)
    if idx >= len(LETTERS) - 1:
        break

版本信息(如果有用的话)

IPython : 8.1.1 IPython:6.9.2ipyWidget: 7.7.0 jupyter_client : 7.1.2 jupyter_core : 4.9.2 jupyter_server : not jupyterlab : nbclient :0.5.13nbversion:6.4.4nb格式: 5.2.0笔记本:6.4.10qt控制台:5。2.2小卖部: 5.1.1

使用Python3.8.10运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-19 07:46:57

因为break是在最后一次迭代中,所以tqdm假设循环没有停止,即使循环是从语义方面完成的。

如果您想在最后有一个绿色进度条,请按照下面的方式构造您的代码

代码语言:javascript
复制
from tqdm.notebook import tqdm

LETTERS = list('ABCDEFGHIJKL')
for idx, letter in enumerate(tqdm(LETTERS, total=len(LETTERS))):
    if idx == len(LETTERS):
        break
    print(letter)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71517385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档