您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

连接到远程IPython实例

连接到远程IPython实例

如果要在另一个Python程序的内核中运行代码,最简单的方法是连接BlockingKernelManager。现在最好的例子是Paul Ivanov的vim-ipython客户端,或IPython自己的终端客户端

要点:

一个工作示例:

在shell中,执行以下操作ipython kernel(或ipython qtconsole如果要与已经在运行的GUI共享内核,请执行以下操作):

$> ipython kernel
[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing kernel-6759.json

这写了’kernel-6759.json’文件

然后,您可以运行此Python代码段以连接KernelManager,并运行一些代码

from IPython.lib.kernel import find_connection_file
from IPython.zmq.blockingkernelmanager import BlockingKernelManager

# this is a helper method for turning a fraction of a connection-file name
# into a full path.  If you already kNow the full path, you can just use that
cf = find_connection_file('6759')

km = BlockingKernelManager(connection_file=cf)
# load connection info and init communication
km.load_connection_file()
km.start_channels()

def run_cell(km, code):
    # Now we can run code.  This is done on the shell channel
    shell = km.shell_channel
    print
    print "running:"
    print code

    # execution is immediate and async, returning a UUID
    msg_id = shell.execute(code)
    # get_msg can block for a reply
    reply = shell.get_msg()

    status = reply['content']['status']
    if status == 'ok':
        print 'succeeded!'
    elif status == 'error':
        print 'Failed!'
        for line in reply['content']['traceback']:
            print line

run_cell(km, 'a=5')
run_cell(km, 'b=0')
run_cell(km, 'c=a/b')

运行的输出

running:
a=5
succeeded!

running:
b=0
succeeded!

running:
c=a/b
Failed!
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
/Users/minrk/<ipython-input-11-fb3f79bd285b> in <module>()
----> 1 c=a/b

ZeroDivisionError: integer division or modulo by zero

有关如何解释回复的更多信息,请参见消息规范。如果相关,则stdout / err和display数据将过来km.iopub_channel,您可以使用返回的msg_id将shell.execute()输出与给定执行关联。

PS:对于这些新功能的文档质量,我深表歉意。我们有很多工作要做

python 2022/1/1 18:37:22 有245人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶