处理时的 Jupyter Notebook 计数器

pen*_*992 6 python jupyter jupyter-notebook

我正在使用 Jupyter Notebook 和 Python 3.0。

我有一段代码需要一段时间才能在 Jupyter Notebook 中执行并识别其当前状态,我想对它所在的循环进行计数器,如下所示:

large_number = 1000
for i in range(large_number):
    print('{} / {} complete.'.format(i,large_number))
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,它会为每次迭代打印一个新行,我不想这样做......相反,我只想更新该值。

我可以在 Jupyter Notebook 中执行此操作吗?

wor*_*ith 6

Jupyter 中此功能的事实标准是tqdm,特别是 tqdm_notebook。它使用简单,提供信息丰富的输出,并且有多种选项。您还可以将它用于 cli 工作。

from tqdm import tqdm_notebook
from time import sleep

for i in tqdm_notebook(range(100)):
    sleep(.05)
Run Code Online (Sandbox Code Playgroud)

输出将是这样的:

在此输入图像描述


Eng*_*ero 2

我喜欢制作一个 ascii 状态栏。假设您需要运行 1000 次迭代并希望在完成之前看到 20 次更新:

num_iter = 1000
num_updates = 20
update_per = num_iter // num_updates  # make sure it's an integer
print('|{}|'.format(' ' * (num_updates - 2)))  # gives you a reference
for i in range(num_iter):
    # code stuff
    if i % update_per == 0:
        print('*', end='', flush=True)
Run Code Online (Sandbox Code Playgroud)

为您提供如下更新:

|                  |
*******
Run Code Online (Sandbox Code Playgroud)

当它运行时。