A picture of me.

Tom Hodson

Maker, Baker Programmer Reformed Physicist RSE@ECMWF


Progress bars and log output in Jupyter notebooks

I wanted to have just one updatable line of output that would play nicely with a tqdm progress bar. After playing around with print(s, end="\r") I settled on using Ipython.display with a handle. The problem with the print approach is that it doesn’t work when the output is shorter than the previous line.

import time
import random
from tqdm.auto import tqdm
from IPython.display import display, Markdown

info_line = display(Markdown(''), display_id=True)

for x in tqdm(range(0,5), position = 0):  
    for y in tqdm(range(0,5), position = 1, leave=False):  
        x = random.randint(1, 10)
        b = "Loading" + "." * x
        info_line.update(Markdown(b))
        time.sleep(0.5)
What it looks like in the end.