在tqdm中的for循环之后更改描述

5

能否在for循环之外设置 tqdm 进度条的描述信息?

以下是一个简单的例子:

with tqdm(range(100), desc='processing') as pbar:
    x = 0
    for i in pbar:
        x += i
    y = x ** 2
    # 3. set description of pbar 'y = {}'.format(y)'

我应该用什么替换3.

编辑:更精确地说,我想在完全执行for循环后计算y,然后我想在进度条描述中记录y的值(替换'processing'描述)。

1个回答

11
你可能对tqdm的工作方式有些误解。有一个简单的内置命令set_description(),可以在循环中设置tqdm进度条的描述。在你的示例代码中,如果你尝试在你的注释位置设置描述,由于你已经完成了对pbar的循环,所以不会发生任何事情。(虽然这可能只是由于错误的缩进)。
下面是一个简单的示例,演示了描述如何更改:
from tqdm import tqdm
import time

pbar = tqdm(range(100), desc='description')

x = 0
for i in pbar:
    x += i
    y = x**2
    pbar.set_description("y = %d" % y)
    time.sleep(0.5)

这将使您能够看到每个循环迭代中描述的更改。

@aretor,根据我的代码,进度条的描述将在循环结束时显示y的最终值。只需删除 time.sleep(0.5),使其运行更快,您就可以测试它了。我留下这个命令是为了让您看到每次迭代中 y 的变化。 - Karan Shishoo
@aretor 你可以在循环结束后打印y,但是改变描述的结束语句有多重要? - Karan Shishoo
不幸的是,在我的代码中,普通的 print 不是选项,因为它会干扰我正在使用的其他进度条。在我的情况下,这并非必要,我认为我可以处理每个步骤的额外计算。 - aretor
@aretor 使用tqdm.write()而不是print,以避免与其他进度条混淆。我会尝试找出一种方法,在进度条关闭后更改描述,但不能保证成功。 - Karan Shishoo
让我们在聊天中继续这个讨论 - Karan Shishoo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接