import sys, time
def job(t):
print("starting")
sys.stdout.flush()
time.sleep(t)
print("done")
from IPython.display import display
from ipywidgets import HTML
from contextlib import contextmanager
@contextmanager
def spinner():
spin = HTML("<img src='http://spiffygif.com/gif'>")
display(spin)
yield
print()
spin.close()
with spinner():
job(5)
starting done