如何从 Python 脚本管理多个 IPython/Jupyter 内核并与之通信?
How to manage and communicate with multiple IPython/Jupyter kernels from a Python script?
我想模仿笔记本服务器的功能,而不是从中央逻辑体(即我自己的 Python 脚本)协调不同 IPython/Jupyter 内核的 creation/management .
例如,我想:
- 定义一个抽象命令,例如"add(x, y)"
- 将抽象命令传达给多个内核,例如IPython 内核和 Scala 内核
- 让每个内核随心所欲地执行命令
- Return每个内核到逻辑中心体的结果
任何人都可以指出如何以编程方式 start/stop/communicate 使用多个 IPython/Jupyter 内核的方向吗?
KernelManager 处理启动和停止单个内核,还有一个 MultiKernelManager 来协调多个内核。
- http://ipython.org/ipython-doc/3/api/generated/IPython.kernel.manager.html
- http://ipython.org/ipython-doc/3/api/generated/IPython.kernel.multikernelmanager.html
然后您可以使用 .client()
方法获取处理与内核通信的 KernelClient 实例:
有关如何与内核通信的详细信息,请参阅 message spec docs。其中一些由 KernelClient 抽象出来,但您可能需要了解其中的一些内容。
我想模仿笔记本服务器的功能,而不是从中央逻辑体(即我自己的 Python 脚本)协调不同 IPython/Jupyter 内核的 creation/management .
例如,我想:
- 定义一个抽象命令,例如"add(x, y)"
- 将抽象命令传达给多个内核,例如IPython 内核和 Scala 内核
- 让每个内核随心所欲地执行命令
- Return每个内核到逻辑中心体的结果
任何人都可以指出如何以编程方式 start/stop/communicate 使用多个 IPython/Jupyter 内核的方向吗?
KernelManager 处理启动和停止单个内核,还有一个 MultiKernelManager 来协调多个内核。
- http://ipython.org/ipython-doc/3/api/generated/IPython.kernel.manager.html
- http://ipython.org/ipython-doc/3/api/generated/IPython.kernel.multikernelmanager.html
然后您可以使用 .client()
方法获取处理与内核通信的 KernelClient 实例:
有关如何与内核通信的详细信息,请参阅 message spec docs。其中一些由 KernelClient 抽象出来,但您可能需要了解其中的一些内容。