如何在Jupyter Notebook上创建嵌套的tqdm进度条

13

这里是嵌套tqdm进度条的示例。

import time
import tqdm
for i in tqdm.tqdm(range(3)):
    for j in tqdm.tqdm(range(5)):
        print(i," : ", j)

我在Jupyter Notebook上尝试了它,但没有显示任何错误! 但是,在iPython控制台上可以正常工作!


1
我来这里发同样的问题。尽管我的问题表现形式不同,但我也遇到了这个确切的场景问题。与更新条不同,我会为每个更新打印一个新的条形码。因此,在发布的代码示例中,我实际上会连续打印约15个条形码(实际上,我认为会多几个,因为我们也会在0状态下得到一个)。更正:由于内部循环足够快,我会得到3个条形码。在内部循环中添加time.sleep(1.5),然后您会得到大约15个条形码。 - Jaxidian
简而言之:嵌套“只是工作”,但在Jupyter中,您需要from tqdm.notebook import tqdm - Tomasz Gandor
1个回答

14

我刚刚找到了要使用的解决方案。这个解决方案有很多例子在这里

我修改了原帖中的示例,包括解决方案和时间延迟以便可视化(最终输出相同,无论是否使用延迟)。

from time import sleep
from tqdm import tqdm_notebook
for i in tqdm_notebook(range(3)):
    for j in tqdm_notebook(range(5)):
        sleep(0.1)
        print(i," : ", j)

print("Done!")
最终的输出看起来是这样的。在处理过程中,它非常流畅(没有跳动或其他疯狂的东西)。 Image of the final output after completion
我现在正在使用一个小技巧,将tqdm引入到代码中,使其成为一个超级易于替换的工具,我不需要改变任何其他代码:
from time import sleep
from tqdm import tqdm_notebook as tqdm
for i in tqdm(range(3)):
    for j in tqdm(range(5)):
        sleep(0.1)
        print(i," : ", j)

print("Done!")

3
关于替代方案:他们考虑了一下,现在是使用from tqdm.notebook import tqdm - Tomasz Gandor
5
或者甚至 from tqdm.auto import tqdm - Will

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