Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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线程上执行代码_Python_Ipython - Fatal编程技术网

在运行内核中的主IPython线程上执行代码

在运行内核中的主IPython线程上执行代码,python,ipython,Python,Ipython,我想对一些代码进行排队,以便在运行内核中的主IPython线程上执行。换句话说,我想做类似的事情(这是伪代码——我找不到实现这一点的API) 我知道我可以使用IPython.kernel.connect.get\u connection\u file()来获取当前内核的连接信息。然后我可以用这个连接文件构造一个客户端。但我希望能找到一种没有连接的方法。有办法吗 我正在使用IPython 2.4。我找到了一个适合我的用例的解决方案。在我的用例中,内核是使用IPython.kernel.multik

我想对一些代码进行排队,以便在运行内核中的主IPython线程上执行。换句话说,我想做类似的事情(这是伪代码——我找不到实现这一点的API)

我知道我可以使用
IPython.kernel.connect.get\u connection\u file()
来获取当前内核的连接信息。然后我可以用这个连接文件构造一个客户端。但我希望能找到一种没有连接的方法。有办法吗


我正在使用IPython 2.4。

我找到了一个适合我的用例的解决方案。在我的用例中,内核是使用
IPython.kernel.multikernelmanager.multikernelmanager
创建的(它在proc之外运行内核)。这与在进程中运行的内核不同(例如,当您通过启动IPython.exe来运行IPython控制台时)

因此,对于我的out-of-proc内核案例,以下方法有效:

zmq.eventloop.ioloop.IOLoop.current().add_callback(my_callback)

我不知道为什么它在进程内核中不起作用。可能是因为在运行IPython控制台时,主线程一直在执行控制台I/O(推测)。

我不认为IPython维护自己的请求队列(ZMQ已经处理了队列)。为什么要将执行排队,而不是直接执行?线程关联性问题。我用ZMQ的IOLoop找到了解决方案。还有,为什么投否决票?不是我。它目前没有显示任何投票——可能是有人无意中点击了。
zmq.eventloop.ioloop.IOLoop.current().add_callback(my_callback)