Каждый блокнот Jupyter использует потоки или процессы - PullRequest
0 голосов
/ 14 сентября 2018

Когда я запускаю команду

jupyter notebook

из оболочки bash, запускается сервер ноутбука jupyter на локальном хосте.Каждый раз, когда я открываю новый блокнот и начинаю выполнять код, это новый процесс на отдельном ядре или новый поток на том же ядре?Предположим, что я должен был запустить N разных независимых ноутбуков, которые сильно загружены процессором, на машине с M ядрами

  1. Если все они работают на одном и том же ядре (один и тот же процесс) с разными потоками, то остальныеядра в основном простаивают?
  2. Если они работают от разных ядер, значит ли это, что я могу одновременно работать только с M ноутбуками?
  3. Или, возможно, это сочетание обоих: ядро ​​ipython заботится о запуске новых потоков / процессов, которые находятся вне моего ручного управления.В этом случае только все записные книжки M могли бы одновременно работать на уровне интерпретатора, но я мог открыть столько записных книжек, сколько позволяла моя память.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Я провел эксперимент на своем ноутбуке, который имеет 2 ядра, максимум 4 потока. Я работал с 2-5 одинаковыми ноутбуками, каждый из которых увеличивал число от 1 до 100 триллионов. На выполнение каждой записной книжки потребовалось несколько минут.

В диспетчере задач Windows каждый блокнот рассматривался как отдельный процесс. Одновременно может работать не более 4 ноутбуков, каждый из которых потребляет от 20 до 25% одного процессора. Пятый блокнот фактически должен был ждать, пока другие не закончили, прежде чем он начал работать.

Так, чтобы ответить на мои собственные вопросы

  1. Каждое исполнение ноутбука - это отдельный поток, способный работать на любом из ядер вашего компьютера. Ячейки в одной и той же записной книжке не могут выполняться одновременно (очевидно) без использования такой библиотеки, как Threading.
  2. Вы можете открыть столько ноутбуков, сколько позволяет оперативная память, при условии, что они не работают. Тем не менее, вы можете запустить только

    MAX_THREADS = THREADS_PER_CORE * NUM_CORES

    ноутбуков одновременно. Если вы попытаетесь запустить больше, дополнительные записные книжки просто остановятся, пока не закончатся другие потоки.

  3. Это правильная интерпретация

0 голосов
/ 14 сентября 2018

Из того, что я могу сказать, прочитав документацию, отчеты об ошибках и использовав ее самостоятельно, каждая команда jupyter notebook запускает свой рабочий процесс, и это то, что доступно для непосредственного запуска.Также можно отправлять длительные задания отдельным рабочим задачам с помощью надстройки или различных модулей параллелизма .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...