【问题标题】:Changing description after a for cycle in tqdm在 tqdm 中的 for 循环后更改描述
【发布时间】:2020-06-05 17:33:31
【问题描述】:

是否可以将tqdm 进度条的描述设置在其 for 循环之外?

一个简单的例子:

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' 描述)。

【问题讨论】:

    标签: python python-3.x tqdm


    【解决方案1】:

    您可能对 tqdm 的工作原理有一点误解。有一个简单的 inbuit 命令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)
    

    这将允许您查看描述在每次循环迭代中的变化。

    【讨论】:

    • 感谢您的回答,但是我提出的示例是我想要实现的。特别是,我想在完全执行 for 循环后计算 y。因此,我想在进度条描述中记录y
    • @aretor 就像我现在的代码一样,进度条的描述将在循环结束时具有 y 的最终值。只需删除time.sleep(0.5),它就会运行得更快,您可以对其进行测试。我把它留在里面,这样你就可以看到 y 在每次迭代中的变化
    • 我明白你的意思。所以基本上除了在for循环中计算y之外别无他法?
    • @aretor 你总是可以在循环完成后打印y,在最后改变描述有多重要?
    • 不幸的是,普通的print 不是我的选项,因为它会与我在代码中使用的其他下一个进度条混淆。就我而言,这不是必须的,我认为我可以在每一步处理额外的计算。
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    相关资源
    最近更新 更多