Я определил функцию python, которая запускает скрипт bash. Скажем, функция: calc(x,y,z)
. Если я запускаю эту функцию в Python с некоторыми переменными,
>>> calc(1,2,3)
Он генерирует код C, который имитирует что-то, используя переменные (x=1, y=2, z=3)
, компилирует код C и выполняет скомпилированный выходной файл.
Я хочу запустить несколько calc(x,y,z)
с разными (x,y,z)
с в ноутбуке jupyter одновременно. Как вы могли заметить, проблема в том, что ячейки в ноутбуке Jupyter выполняются последовательно. Если я запускаю три calc
функции, это занимает в три раза больше времени, чем одна функция.
Я попробовал два способа, но они не сработали.
- Использовать модуль
multiprocessing
: с помощью модуля можно выполнять несколько calc
одновременно в «одной ячейке». Но для более позднего анализа я хотел бы выполнить несколько ячеек одновременно, которые включают только одну calc
каждая с использованием разных процессоров (или ядер ЦП).
Использование ipyparallel
магии клетки (на основе этого ответа ): после импорта я попробовал следующее ipyparallel
# Cell 1
%%px --targets 0 # use processor 0
calc(1,1,1)
.
# Cell 2
%%px --targets 1 # use processor 1
calc(2,2,2)
.
# Cell 3
%%px --targets 2 # use processor 2
calc(3,3,3)
Но ячейки выполняются последовательно: ячейка 2 выполняется после моделирования ячейки 1, аналогично ячейке 3.
Как запустить несколько ячеек юпитера, используя разные ядра?