如何向IPython中的ThreadedKernelClient添加回调?
目前,我正在通过以下方式获得一个如何向IPython中的ThreadedKernelClient添加回调?,ipython,jupyter,Ipython,Jupyter,目前,我正在通过以下方式获得一个ThreadedKernelClient: kernel_manager = KernelManager(client_class='IPython.kernel.threaded.ThreadedKernelClient') kernel_manager.start_kernel() kernel_client = kernel_manager.client() 但是,我不确定如何为传入消息注册回调(在运行execute之后)。有人能给我指出正确的方向吗?我所
ThreadedKernelClient
:
kernel_manager = KernelManager(client_class='IPython.kernel.threaded.ThreadedKernelClient')
kernel_manager.start_kernel()
kernel_client = kernel_manager.client()
但是,我不确定如何为传入消息注册回调(在运行
execute
之后)。有人能给我指出正确的方向吗?我所做的是子类ThreadedZMQSocketChannel
和ThreadedKernelClient
,以及重写调用处理程序
,例如:
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')
一旦
启动\u通道
,您的调用\u处理程序
方法将被调用,其结果来自执行
等方法,我所做的是子类线程化zmqsocketchannel
和线程化内核客户端
,并重写调用\u处理程序
,例如:
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')
一旦启动\u通道
,您的调用\u处理程序
方法将被调用,其结果来自执行
等方法