【问题标题】:Does each jupyter notebook use threads or processes每个 jupyter notebook 是否使用线程或进程
【发布时间】:2018-09-14 02:29:09
【问题描述】:

当我运行命令时

jupyter 笔记本

从 bash shell 这将在 localhost 上启动一个 jupyter notebook 服务器。每次我打开一个新笔记本并开始执行代码时,那是单独内核上的新进程还是同一内核上的新线程?假设我要在具有 M 个内核的机器上运行 N 个不同的独立笔记本,这些笔记本 CPU 很重

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

【问题讨论】:

  • 这个帖子其实是几个问题。每个 ”?”在你的帖子中是一个不同的问题。但一般来说,一篇好的帖子只关注一个问题。您可以编辑以专注于“我可以在具有 N 核的机器上运行多少个 ipython jupyter 笔记本?”或类似的东西。调查您自己的问题的一种方法是,有一些系统工具,如用于 Linux 的 top 和用于 Windows 的任务管理器,可让您观察正在运行的进程。您是否尝试过在运行更多笔记本时使用它们,如果是,您的观察结果是什么?

标签: python jupyter-notebook


【解决方案1】:

我在我的笔记本电脑上做了一个实验,它有 2 个内核,最多 4 个线程。我在 2-5 个相同的笔记本之间运行,每个笔记本都增加了 1-100 万亿的数字。每个笔记本都需要几分钟才能完成执行。

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

所以回答我自己的问题

  1. 笔记本的每次执行都是一个单独的线程,能够在您计算机的任何内核上运行。如果不使用 Threading 之类的库,同一笔记本中的单元无法(显然)同时执行。
  2. 您可以在 RAM 允许的范围内打开尽可能多的笔记本,前提是它们不执行。但是,您只能运行

    MAX_THREADS = THREADS_PER_CORE*NUM_CORES

    笔记本同时进行。如果您尝试运行更多,额外的笔记本将停止,直到其他线程完成。

  3. 这是正确的解释

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 2013-10-22
      相关资源
      最近更新 更多