Консоль IPython в Spyder очень медленно в Anaconda

Я пытаюсь Anaconda/Spyder после использования стандартной установки Python/IDLE в течение нескольких лет. Консоль (и обозреватель переменных) становится все медленнее во время каждого рабочего сеанса, с каждым скриптом и интерактивной командой, которую я запускаю. В конце концов, требуется несколько минут, чтобы получить ответ на простые команды, такие как печать, а затем он перестает отвечать полностью, и я выключаю его. Это довольно разрушительно для моей работы.

Mac OSX 10.13.6

conda version : 4.5.11
conda-build version : 3.15.1
python version : 3.7.0.final.0

qt 5.9.6
spyder 3.3.1 
ipython 7.1.1

Я часто использую matplotlib. По возможности я использую plt.ioff() в начале скрипта и / или plt.close('all') в конце. Полное отключение поддержки matplotlib в настройках не помогает, и в любом случае это не постоянное исправление. Python не использует нигде почти все мои CPU или RAM.

2 ответа

Решение

Так что это не совсем удовлетворительное решение, но кажется разумным временным решением. Если вы понизите версию spyder до 3.1.X, вы сможете использовать консоль python, а не консоль Ipython, и мне кажется, это работает. Для этого просто запустите:

conda install spyder=3.1

в терминале, когда ваша среда выбора активна. Это не идеально, потому что разработчики удалили консоль python по определенной причине, как указано в этом вопросе, Как добавить консоль python в spyder. Кроме того, понижение этого уровня может привести к непредвиденным последствиям для других пакетов, которые использует ваш код, и может вызвать другие проблемы, но пока это единственное решение, которое мне удалось найти.

Насколько я выяснил, проблема, похоже, в последнем основном выпуске ядра ipython. Прикрепление версии ipykernel к 4.10.0 решило это для меня. Для этого добавьте строку, содержащую ipykernel 4.* в файл ~/anaconda3/conda-meta/pinned, Создайте файл, если он еще не существует. затем conda update ipykernel который фактически понизит до 4.10.0. Работал на меня!

Вам не нужно понижать версию всего шпиона. Для меня это сработало с понижением этих двух: conda install ipython=6.4.0 conda install ipykernel=4.10.0

@Sjoerd Спасибо за ваш ответ, у меня это сработало. Для большей ясности вот что я сделал в терминале Anaconda 3 на High Sierra:

echo "ipykernel 4.10.0" >> ~ / anaconda3 / conda-meta / закреплено

conda update анаконда

Когда я пытался обновить только ipykernel, у меня возникали ошибки зависимостей. При обновлении anaconda все обновлено, кроме ipykernel, который фактически имеет версию 4.10.0. С тех пор никаких зависаний не наблюдалось.

Ответ @JJR4 не работает для меня (кажется, работает для других). Другой обходной путь заключается в наборе %connect_info Волшебная команда в консоли IPython Spyder, которая отображает информацию JSON для подключения другой консоли к ядру.

Вывод магической команды объясняет, как подключиться, но в основном есть три варианта.

Вставьте вышеуказанный JSON в файл и соединитесь с:

$> jupyter <app> --existing <file>

или, если вы локальный, вы можете подключиться просто:

$> jupyter <app> --existing <kernel>.json

или даже просто:

$> jupyter <app> --existing

если это самое последнее ядро ​​Jupyter, которое вы запустили.

Я обычно использую qtconsole в качестве приложения. Как только вы введете выбранный метод подключения в командную строку, откроется новая консоль, которая подключена к тому же ядру, что и консоль в Spyder. По какой-то причине новая консоль не запаздывает, даже если консоль Spyder делает.

Введите все в новой консоли, даже runfile()

Надеюсь это поможет!

Другие вопросы по тегам