Jupyter notebooks have the inherent ability to be modified by users as and when the user enters data or makes a selection. However, there is an issue with the standard implementation of the notebook server software that does not account for more than one person working on a notebook at the same time. The notebook server software is the underlying Jupyter software that displays the page and interacts with the user-it follows the directions in your notebook for display and interaction.
A notebook server, really a specialized internet web server, typically creates a new path or thread of execution for each user to allow for multiple users. A problem comes up when a lower level subroutine, used for all instances, does not properly account for multiple users where each has their own set of data.
In this chapter, we will do the following:
For this chapter, we will use a simple notebook that asks the user for some information and displays other information.
For example, we could have a script such as this (taken from Chapter 7 , Sharing and Converting Jupyter Notebooks):
from ipywidgets import interact def myfunction(x): return x interact(myfunction, x= "Hello World ")
The script presents a textbox to the user with the original value of the box containing the "Hello World"
string. As the user interacts with the input field and changes the value, the value of the variable x
in the script changes accordingly and is displayed on screen. For example, I have changed the value to the letter A
:
We can see the multiuser problem if we just open the same page in another browser window (copy the URL, open a new browser window, paste in the URL, and hit Enter)-we get the exact same display pulling up the last checkpoint. The new window should have started with a new script, just prompting you with the default "Hello World"
message. However, since the Jupyter server software is only expecting one user, there is only one copy of the variable x
, so it displays its value.
18.217.182.45