title: Does each jupyter notebook use threads or processes
body: <p>When I run the command</p>
  
  <blockquote>
    <p>jupyter notebook</p>
  </blockquote>
  
  <p>from the bash shell this starts a jupyter notebook server on localhost. Every time I open a new notebook and start executing code, is that a new process on a separate core or a new thread on the same core? Suppose I were to run N different independent notebooks which are CPU heavy, on a machine with M cores</p>
  
  <ol>
  <li>If they all run from the same core (same process) with different threads then are the rest of the cores are basically idle?</li>
  <li>If they run from different cores, then does that mean I can only run M total notebooks at the same time? </li>
  <li>Or perhaps its a mix of both: the ipython kernel takes care of launching new threads/processes that are beyond my manual control. In which case only M total notebooks would be able actually execute concurrently at the interpreter level, but I could open as many notebooks as my memory would allow.</li>
  </ol>