如何向 IPython 中的 ThreadedKernelClient 添加回调?
How can I add a callback to a ThreadedKernelClient in IPython?
目前我正在通过以下方式获得 ThreadedKernelClient
:
kernel_manager = KernelManager(client_class='IPython.kernel.threaded.ThreadedKernelClient')
kernel_manager.start_kernel()
kernel_client = kernel_manager.client()
但是,我不确定如何为收到的消息注册回调(在 运行 execute
之后)。谁能指出我正确的方向?
我所做的是子类ThreadedZMQSocketChannel
和ThreadedKernelClient
,并覆盖了call_handlers
,例如:
class TestChannel(ThreadedZMQSocketChannel):
def call_handlers(self, msg):
# do something
class TestClient(ThreadedKernelClient):
iopub_channel_class = Type(TestChannel)
shell_channel_class = Type(TestChannel)
stdin_channel_class = Type(TestChannel)
你的经理看起来像:
kernel_manager = KernelManager(kernel_name='python', client_class='__main__.TestClient')
一旦您 start_channels
,您的 call_handlers
方法将被调用,并使用 execute
.
等方法的结果
目前我正在通过以下方式获得 ThreadedKernelClient
:
kernel_manager = KernelManager(client_class='IPython.kernel.threaded.ThreadedKernelClient')
kernel_manager.start_kernel()
kernel_client = kernel_manager.client()
但是,我不确定如何为收到的消息注册回调(在 运行 execute
之后)。谁能指出我正确的方向?
我所做的是子类ThreadedZMQSocketChannel
和ThreadedKernelClient
,并覆盖了call_handlers
,例如:
class TestChannel(ThreadedZMQSocketChannel):
def call_handlers(self, msg):
# do something
class TestClient(ThreadedKernelClient):
iopub_channel_class = Type(TestChannel)
shell_channel_class = Type(TestChannel)
stdin_channel_class = Type(TestChannel)
你的经理看起来像:
kernel_manager = KernelManager(kernel_name='python', client_class='__main__.TestClient')
一旦您 start_channels
,您的 call_handlers
方法将被调用,并使用 execute
.