Почему Ipython-камеры перестают выполняться?

Я уверен, что это очень новый вопрос, поэтому я заранее извиняюсь. Я пытаюсь использовать ipython notebook для группового проекта. Программа, которую мы строим, довольно велика и тянет большое количество внешних наборов данных. В большинстве случаев Ipython, похоже, перестает работать. Я попытаюсь запустить ячейку или несколько ячеек, и ничего не произойдет (кроме маленькой звездочки * появится в скобках [] слева от ячейки). Даже если я попытаюсь просто добавить новую ячейку и выполнить 2 + 2, ничего не произойдет. Что здесь происходит? Как это исправить? Спасибо!

Ответы

Ответ 1

Звездочка рядом с ячейкой [*] указывает, что ячейка в настоящее время выполняется. В то время как IPython предоставляет каждому ноутбуку свое собственное ядро, для каждого ноутбука есть только одно ядро. Когда это ядро ​​занято выполнением кода (либо ячейки, либо серии ячеек), оно не может принимать или запускать какой-либо дополнительный код до тех пор, пока то, что он в данный момент делает, закончено. Новые исполнения сидят в очереди, пока ядро ​​не будет готово.

Если вы подождете достаточно долго после попытки выполнить 2+2, вы должны обнаружить, что он в конце концов будет выполнен (если ваш основной код когда-либо выходит).

Решение этого зависит от вашего кода и от того, как долго вы готовы ждать результатов. Как правило, попробуйте следующее:

  • Используйте меньший набор данных для проверки алгоритма, затем постепенно увеличивайте масштаб, увеличивая время. Будет ли это осуществимо с полным набором данных?
  • Является ли ваш алгоритм чтения/записи на диск? Можете ли вы избежать этого или предварительно загрузить/пост-сохранить состояние?
  • Можно ли разделить ваши данные на партии?
  • Если ваш алгоритм является пакетным, можете ли вы его распараллелить, чтобы наилучшим образом использовать ваш процессор?

Вы можете прервать ядро, однако это не сработает, если выполнение в настоящее время выходит из рук ядра, например. в внешних модулях C (например, много numpy). В таких случаях вам может потребоваться перезагрузка полностью.