Консоль 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()
Надеюсь это поможет!