Ответ 1
Звездочка рядом с ячейкой [*]
указывает, что ячейка в настоящее время выполняется. В то время как IPython предоставляет каждому ноутбуку свое собственное ядро, для каждого ноутбука есть только одно ядро. Когда это ядро занято выполнением кода (либо ячейки, либо серии ячеек), оно не может принимать или запускать какой-либо дополнительный код до тех пор, пока то, что он в данный момент делает, закончено. Новые исполнения сидят в очереди, пока ядро не будет готово.
Если вы подождете достаточно долго после попытки выполнить 2+2
, вы должны обнаружить, что он в конце концов будет выполнен (если ваш основной код когда-либо выходит).
Решение этого зависит от вашего кода и от того, как долго вы готовы ждать результатов. Как правило, попробуйте следующее:
- Используйте меньший набор данных для проверки алгоритма, затем постепенно увеличивайте масштаб, увеличивая время. Будет ли это осуществимо с полным набором данных?
- Является ли ваш алгоритм чтения/записи на диск? Можете ли вы избежать этого или предварительно загрузить/пост-сохранить состояние?
- Можно ли разделить ваши данные на партии?
- Если ваш алгоритм является пакетным, можете ли вы его распараллелить, чтобы наилучшим образом использовать ваш процессор?
Вы можете прервать ядро, однако это не сработает, если выполнение в настоящее время выходит из рук ядра, например. в внешних модулях C (например, много numpy
). В таких случаях вам может потребоваться перезагрузка полностью.