我想在一个ipython会话中打开几个内核,在这些内核上运行代码,然后收集结果.但我无法弄清楚如何收集结果,甚至看不到stdout/stderr.我怎么能做这些事情?
我已经管理了前两个步骤(打开内核并在其上运行代码),代码如下:
from jupyter_client import MultiKernelManager
kernelmanager = MultiKernelManager()
remote_id = kernelmanager.start_kernel('python3')
remote_kernel = kernelmanager.get_kernel(remote_id)
remote = remote_kernel.client()
sent_msg_id = remote.execute('2+2')
Run Code Online (Sandbox Code Playgroud)
[我欢迎任何有关如何改进或关闭这些内核和客户端的建议.]
这里,python3可以是我设置的任何内核的名称(可以在命令行中列出jupyter-kernelspec list).我似乎能够运行任何合理的代码来代替'2+2'.例如,我可以写入文件,并且该文件确实已创建.
现在,问题是如何获得结果.我可以得到一些看似相关的消息
reply = remote.get_shell_msg(sent_msg_id)
Run Code Online (Sandbox Code Playgroud)
那个回复是这样的字典:
{'buffers': [],
'content': {'execution_count': 2,
'payload': [],
'status': 'ok',
'user_expressions': {}},
'header': {'date': datetime.datetime(2015, 10, 19, 14, 34, 34, 378577),
'msg_id': '98e216b4-3251-4085-8eb1-bfceedbae3b0',
'msg_type': 'execute_reply',
'session': 'ca4d615d-82b7-487f-88ff-7076c2bdd109',
'username': 'me',
'version': '5.0'},
'metadata': {'dependencies_met': True,
'engine': '868de9dd-054b-4630-99b7-0face61915a6',
'started': '2015-10-19T14:34:34.265718',
'status': 'ok'},
'msg_id': '98e216b4-3251-4085-8eb1-bfceedbae3b0',
'msg_type': 'execute_reply',
'parent_header': …Run Code Online (Sandbox Code Playgroud) 我一直在努力让这个工作.我已经跟踪了我能找到的在线资料但是没有成功,例如:Ipython Documentation
我正在尝试将本地计算机(笔记本电脑)上的IPython QTConsole连接到Internet上Linode云服务器上运行的IPython内核.
我现在不担心安全性,只需要简单的方法来做到这一点.
我知道我可以使用somethign在远程(Linode服务器)上启动内核,例如:
Ipython kernel --ip=0.0.0.0
Run Code Online (Sandbox Code Playgroud)
一旦我运行这个,我可以记下kernel-xxxx.json文件,我也知道要在远程机器上找到它.使用0.0.0.0表示法我理解内核将侦听外部连接.
我只是不确定如何从我的本地机器(笔记本电脑)连接到它
让我们说
Remote machine IP adres = aa.bb.cc.dd
Remote machine Login name = root
Remote machine hostname = dummyname
Run Code Online (Sandbox Code Playgroud)
本地机(笔记本电脑)
IPAdress = qq.ww.ee.rr
Run Code Online (Sandbox Code Playgroud)
我可以正常看到服务器和ssh,例如
ssh root@aa.bb.cc.dd
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我用ipython命令行从我的笔记本电脑连接到这个远程内核吗?
IPython 具有用于定位内核连接文件的有用功能。
In [1]: from IPython.lib.kernel import find_connection_file
In [2]: find_connection_file()
Out[2]: 'C:\\Users\\me\\.ipython\\profile_default\\security\\kernel-1234.json'
Run Code Online (Sandbox Code Playgroud)
JupyterWindows 上的等效项是什么?