I think the output should be
08:31:35: Main : before creating thread
08:31:35: Main : before running thread
08:31:35: Thread 1: starting
08:31:35: Main : wait for the thread to finish
08:31:35: Main : all done
But actually the output is
08:31:35: Main : before creating thread
08:31:35: Main : before running thread
08:31:35: Thread 1: starting
08:31:35: Main : wait for the thread to finish
08:31:35: Main : all done
08:31:45: Thread 1: finishing
in ipynb file.