Jar*_*děk 5 python jupyter-notebook tqdm
我在 Jupyter Notebook 中使用tqdm模块。假设我有以下带有嵌套 for 循环的代码。
import time
from tqdm.notebook import tqdm
for i in tqdm(range(3)):
for j in tqdm(range(5)):
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
100%|??????????| 3/3 [00:15<00:00, 5.07s/it]
100%|??????????| 5/5 [00:10<00:00, 2.02s/it]
100%|??????????| 5/5 [00:05<00:00, 1.01s/it]
100%|??????????| 5/5 [00:05<00:00, 1.01s/it]
Run Code Online (Sandbox Code Playgroud)
是否有任何选项,如何在运行期间仅显示当前 j进度条?那么,完成迭代后的最终输出会是这样吗?
100%|??????????| 3/3 [00:15<00:00, 5.07s/it]
100%|??????????| 5/5 [00:05<00:00, 1.01s/it]
Run Code Online (Sandbox Code Playgroud)
您可以通过每次在内循环开始之前重置进度条对象来实现此目的。
尝试以下代码以获得您想要的结果。
import time
from tqdm.notebook import tqdm
#initializing progress bar objects
outer_loop=tqdm(range(3))
inner_loop=tqdm(range(5))
for i in range(len(outer_loop)):
inner_loop.refresh() #force print final state
inner_loop.reset() #reuse bar
outer_loop.update() #update outer tqdm
for j in range(len(inner_loop)):
inner_loop.update() #update inner tqdm
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
输出:
创建进度条时可以使用 leave 参数。像这样的东西:
import time
from tqdm import tqdm
for i in tqdm(range(3)):
for j in tqdm(range(5), leave=bool(i == 2)):
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)