学习笔记:Jupyter和IPython
IPython Kernel
说起Jupyter,就要先说一下IPython Kernel。IPython Kernel是一个独立进程,用来执行用户的python代码,kernel进程和notebook或者Qt console这类的前端通信。一个kernel进程可以有不止一个前端,因为共享了kernel,所有的前端可以共享python变量。
IPython Kernel由两部分组成,一部分是Python的执行核心,用来解析执行python代码,另一部分是与前端通过Json格式的消息队列通信的支持。
IPython Kernel的设计初衷是为了同时支持多个前端,但这种设计使得为前端添加其他语言的kernel非常容易,也就是使同样的前端支持多种语言。最简单的方式,是复用IPython Kernel的消息机制,只需要重写语言执行核心即可 (Wrapper Kernel)。另外一种方式是为新语言重写一个新的kerne (Native Kernel)
Notebooks
Notebooks 负责运行代码,存储代码和输出,它可以把代码和输出等所有信息存储为一个文件,也可以加载之前存储的文件。这个文件就是notebook,扩展名.ipynb
IPython
Jupyter 项目的前身其实就是IPython Notebook。它是由IPython项目中编程语言无关的部分,如notebook format,message protocol, notebook web application等单独分化而来。现在IPython主要作为Python Shell存在,它为Jupyter提供了python kernel。
参考资料
https://jupyter.readthedocs.io/en/latest/architecture/how_jupyter_ipython_work.html
https://jupyter.readthedocs.io/en/latest/ipython/content-ipython.html