Блокнот Jupyter, как запустить несколько ячеек одновременно? - PullRequest
3 голосов
/ 12 мая 2019

Я определил функцию 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 функции, это занимает в три раза больше времени, чем одна функция.

Я попробовал два способа, но они не сработали.

  1. Использовать модуль multiprocessing: с помощью модуля можно выполнять несколько calc одновременно в «одной ячейке». Но для более позднего анализа я хотел бы выполнить несколько ячеек одновременно, которые включают только одну calc каждая с использованием разных процессоров (или ядер ЦП).
  2. Использование 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.

Как запустить несколько ячеек юпитера, используя разные ядра?

...