Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向IPython中的ThreadedKernelClient添加回调?_Ipython_Jupyter - Fatal编程技术网

如何向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处理程序
方法将被调用,其结果来自
执行
等方法