Мне было интересно, есть ли способ перезапустить ядро ipython, не закрывая его, например, функцию перезапуска ядра, которая существует в ноутбуке. Я пробовал %reset
, но это, похоже, не очищает импорт.
Reset ipython kernel
Ответ 1
Даже если было бы удобно, если %reset
очистит пространство имен и кеш для импорта (как в записной книжке), можно явно перезагрузить ранее импортированный модуль, используя importlib.reload
в python3.4 или imp.reload
в python3.0-3.3 (и при необходимости reset ядро на втором шаге).
Ответ 2
Я могу перезапустить ядро, но некоторые сеансы консоли требуют больше времени для повторного подключения. Ноутбук мгновенно обнаруживает перезагрузку ядра.
ipykernel.ipkernel.IPythonKernel
класс имеет метод do_shutdown
с параметром restart
, который по умолчанию равен False
.
Получить ссылку на ipykernel.kernelapp.IPKernelApp
, которая имеет ссылку на ядро и вызывает do_shutdown
ядра, передав True
.
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
Как я тестировал?
$ #start notebook
$ jupyter notebook
$ #connect to existing kernel
$ jupyter console --existing
Ответ 3
Если вы установили Spyder вместе с Anaconda, откройте окно Spyder.
Затем Консоли (строка меню) → Перезагрузить Консоли.
или вы можете использовать CTRL+. которая является сочетанием клавиш для перезапуска консоли.
Ответ 4
В консоли qt вы можете нажать ctrl-
Ответ 5
IPython Qt-console имеет функцию ядра reset. Вы можете использовать это, если используете IPython Qt. ИМО это лучше, чем использование из оболочки.
Ответ 6
В 3.7 Anaconda просто зайдите в Kernel, выберите Restart
Ответ 7
class KernelActionHandler(APIHandler):
@web.authenticated
@json_errors
@gen.coroutine
def post(self, kernel_id, action):
km = self.kernel_manager
if action == 'interrupt':
km.interrupt_kernel(kernel_id)
self.set_status(204)
if action == 'restart':
try:
yield gen.maybe_future(km.restart_kernel(kernel_id))
except Exception as e:
self.log.error("Exception restarting kernel", exc_info=True)
self.set_status(500)
else:
model = km.kernel_model(kernel_id)
self.write(json.dumps(model))
self.finish()