Подтвердить что ты не робот

Reset ipython kernel

Мне было интересно, есть ли способ перезапустить ядро ​​ipython, не закрывая его, например, функцию перезапуска ядра, которая существует в ноутбуке. Я пробовал %reset, но это, похоже, не очищает импорт.

4b9b3361

Ответ 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

enter image description here

Ответ 7

Из https://github.com/jupyter/notebook/blob/f19d68a33193dff07e62f11da0ebce331e8acbda/notebook/services/kernels/handlers.py#L75:

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()