multithreading/multiprocessing with ipywidgets and jupyter notebooks
The following will return a "control panel" with buttons for starting and monitoring the thread.
from nbmultitask import ThreadWithLogAndControls
from time import sleep
# the target function will be passed a function called `thread_print`
def fn(thread_print):
i = 1
# be careful with loops... (in order for the stop button to work)
while i <= 5:
thread_print('%i...' % i)
sleep(1.5)
i+=1
task = ThreadWithLogAndControls(target=fn, name="do some stuff")
task.control_panel()
Please see the examples.ipynb
for more usage examples.