【问题标题】:IPython notebook: How to connect to existing kernel?IPython 笔记本:如何连接到现有内核?
【发布时间】:2015-07-13 11:40:21
【问题描述】:

我可以通过以下方式将两个ipython console 会话连接到一个内核:

$ ipython console
In [1]: %connect_info  
{
   ... Content of JSON with info for connecting ...
}

Paste the above JSON into a file, and connect with:
    $> ipython <app> --existing <file>
or, if you are local, you can connect with just:
    $> ipython <app> --existing kernel-43204.json
or even just:
    $> ipython <app> --existing
    if this is the most recent IPython session you have started.

因此我可以再次通过控制台替换&lt;app&gt;

$ ipython console --existing kernel-43204.json

但是,我想与 ipython notebook 共享我的内核,以便可视化我的数据。我尝试过但失败了:

$ ipython notebook --existing kernel-43204.json
[C 13:35:01.025 NotebookApp] Unrecognized flag: '--existing'

有什么建议可以在ipython consoleipython notebook 之间切换吗?

【问题讨论】:

标签: ipython ipython-notebook


【解决方案1】:

笔记本没有 UI,也没有 API,为了代码的简单性,假设笔记本是拥有并启动内核的那个。您必须编写自己的 KernelManager 子类并配置 IPython 以使用它(+ 编写一些 UI 代码,如果您希望它易于使用),以便能够选择已经存在的内核。

【讨论】:

  • 你认为这个未实现的功能是否违背了 ipython notebook 的“意识形态”? ...或者如果实施,它可能会得到维护?
  • 我怀疑如果实现它会被维护,如果你这样做会有一些固有的抽象破坏。虽然是一种有限的时尚,但我知道它对某些人来说会很有趣。
  • 所以,如果我理解的话,笔记本允许多个内核实例(每个笔记本一个)和多个内核类型(内核->更改内核菜单),但所有内核都必须从 HTML 界面启动。由于内核 ZeroMQ 接口具有一定的安全性,我希望仅在共享服务器机器上运行内核,并将本地运行的笔记本附加到现有内核。没有解决这个question的动机。配置 HTTPS 的步骤让我不知所措。
  • Jupyter 笔记本支持连接到已运行内核的另一个用例是帮助调试内核本身。由于目前无法在调试器中启动内核,然后让 Jupyter notebook 连接到正在调试的内核实例,我们必须求助于让 Jupyter 启动内核,然后将调试器附加到这个已经运行的内核。这意味着要调试早期内核启动是非常困难的,除非我们修改内核以某种方式等待调试器附加到它。
【解决方案2】:

这是自定义内核管理器的示例,它允许 Jupyter notebook 到外部创建的内核。

https://github.com/ebanner/extipy

这充其量只是一个 hacky 解决方案。

Jupyter 的人们可以希望创建这样的自定义内核类并将其包含在包中,并通过简单的现有开关启用它。我看不出他们为什么不能这样做。

【讨论】:

    【解决方案3】:

    我会给你一个相反的解决方案。无需将笔记本连接到现有内核,您可以轻松地将 ipython 会话连接到由笔记本启动的内核。

    1. 启动您的笔记本。现在你有一个正在运行的内核。
    2. 在代码单元中,运行魔术命令%qtconsole

    现在你有一个控制台和笔记本连接到同一个内核。您可以多次运行魔法命令并拥有多个控制台。

    顺便说一句,qtconsole 是一个非常智能的控制台。它甚至比终端更好,尤其是如果您是 Windows 用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      相关资源
      最近更新 更多