核心其实就是最早我们用的IPython,下面是一个简单的介绍。

IPython 内核

所有其他接口——笔记本、Qt 控制台、 终端和第三方接口——都使用 IPython 内核。IPython 内核是一个独立的进程,负责运行用户代码,以及计算可能的完成。 前端,如笔记本或 Qt 控制台,使用通过ZeroMQ 套接字发送的 JSON 消息与 IPython 内核进行通信;前端和 IPython 内核之间使用的协议 在 Jupyter 中的消息传递中进行了描述 ipython console

内核的核心执行机制与终端 IPython 共享。

一个内核进程可以同时连接到多个前端。在这种情况下,不同的前端将可以访问相同的变量。

这种设计旨在允许基于相同内核轻松开发不同的前端,但它也可以通过在这些语言中开发内核来支持相同前端中的新语言,我们正在改进 IPython 以使其更实用。

今天,有两种方法可以为另一种语言开发内核。Wrapper 内核重用 IPython 的通信机制,并且只实现核心执行部分。本机内核以目标语言实现执行和通信。

对于具有良好 Python 包装器的语言(如octave_kernel )或无法实现通信机制的语言(如 bash_kernel ),包装器内核更容易快速编写。使用原生内核的社区可能会更好地维护原生内核,例如 IJulia IHaskell

jupyter notebook不重启重新import

如何不重启jupyter重新加载更新后的模块

在jupyter notebook中,有时候我们更改了imoprt的某个包 (比如叫: foo),需要重新加载foo的时候,是不生效的,需要重启jupyter 才行。

如何不重启也能够让更新过的包生效呢,只需要用importlib.reload(foo)即可:

import foo
import importlib
importlib.reload(foo)

vscode使用jupyter

  • 私信