每个Jupyter Notebook是否使用线程或进程

时间:2018-09-14 02:29:09

标签: python jupyter-notebook

当我运行命令时

  

jupyter笔记本

从bash shell启动本地主机上的jupyter笔记本服务器。每次我打开一个新的笔记本并开始执行代码时,是在另一个内核上的一个新进程还是在同一内核上的一个新线程?假设我要在一台M核的机器上运行N个不同的,占用大量CPU的独立笔记本电脑

  1. 如果它们都在具有不同线程的同一核心(同一进程)上运行,那么其余核心是否基本处于空闲状态?
  2. 如果它们运行在不同的内核上,那是否意味着我只能同时运行M台笔记本电脑?
  3. 或者两者兼而有之:ipython内核负责启动我无法手动控制的新线程/进程。在这种情况下,总共只有M个笔记本实际上可以在解释器级别上同时执行,但是我可以在内存允许的范围内打开尽可能多的笔记本。

2 个答案:

答案 0 :(得分:1)

从阅读文档,错误报告以及我自己使用它可以看出,每个jupyter notebook命令都会启动它自己的工作进程,而这就是可以直接运行的程度。也可以使用an add-onvarious concurrency modules将长时间运行的作业发送到单独的工作程序任务。

答案 1 :(得分:1)

我在笔记本电脑上进行了一个实验,该笔记本电脑有2个核心,最多4个线程。我运行了2-5个相同的笔记本,每个笔记本增加了1-100万亿个数字。每个笔记本花了几分钟才能完成执行。

在Windows任务管理器中,每个笔记本都被视为自己的进程。一个笔记本最多可以同时执行4个笔记本,每个笔记本消耗单个CPU的20%至25%。第五本笔记本实际上必须等到其他笔记本完成后才能开始执行。

所以回答我自己的问题

  1. 笔记本的每次执行都是一个单独的线程,能够在计算机的任何内核上运行。如果不使用诸如线程之类的库,则同一笔记本中的单元不能并发执行(显然)。
  2. 假设RAM不执行,则可以在RAM允许的情况下打开任意数量的笔记本。但是,您只能运行

      

    MAX_THREADS = THREADS_PER_CORE * NUM_CORES

    笔记本同时进行。如果您尝试运行更多笔记本,则其他笔记本将停顿直到其他线程结束。

  3. 这是正确的解释