Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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脚本_Python_Ipython - Fatal编程技术网

将变量从ipython内核导入python脚本

将变量从ipython内核导入python脚本,python,ipython,Python,Ipython,我想编写一个python脚本,它可以从现有的ipython内核导入所有局部变量 我查看了iPythonAPI,但并没有真正找到我想要的 这里有几个更精确的问题: 1-ipython API中是否有列出所有现有活动ipython内核的函数 2-是否可以在不启动嵌入式ipython的情况下从内核获取所有变量 编辑:这背后的想法是在文本模式下为python创建一个变量浏览器,可以实时显示给定内核中的本地/全局变量 编辑:我编写了下面的类,这些类可以实现我想要的功能。然而,我认为这不是最优的。特别是,g

我想编写一个python脚本,它可以从现有的ipython内核导入所有局部变量

我查看了iPythonAPI,但并没有真正找到我想要的

这里有几个更精确的问题:

1-ipython API中是否有列出所有现有活动ipython内核的函数

2-是否可以在不启动嵌入式ipython的情况下从内核获取所有变量

编辑:这背后的想法是在文本模式下为python创建一个变量浏览器,可以实时显示给定内核中的本地/全局变量

编辑:我编写了下面的类,这些类可以实现我想要的功能。然而,我认为这不是最优的。特别是,
get\u iopub\u message
非常无聊。事实上,它可以获取所有消息(甚至“空闲”和“忙碌”),但我没有找到更直接的方法来访问
who
输出

class Watcher(Thread):
    def __init__(self, km, delay):
        Thread.__init__(self)
        self.km = km
        self.delay = delay
        self.msg, self.variables = self.InitWhos()

    def run(self):
        ''' Main loop '''
        while True:
            try:
                data = self.km.get_iopub_msg(timeout=0.1)
                self.msg = 1
            except Empty:
                pass
            else:
                try:
                    if data['content']['execution_state'] == 'idle' and self.msg == 1:
                        self.msg, self.variables = self.Whos()
                except KeyError:
                    pass

            sleep(self.delay)

    def Whos(self):
        ''' Execute whos in the kernel and get output '''
        self.km.shell_channel.execute('whos', store_history=None)
        while self.msg == 1:
            try :
                data = self.km.get_iopub_msg(timeout=0.1)
                self.variables = data['content']['data']
            except KeyError:
                pass
            else:
                data = self.km.get_iopub_msg(timeout=0.1)
                self.msg = 0
        return self.msg, self.variables

    def InitWhos(self):
        ''' Init variables on startup '''
        self.msg = 1
        return self.Whos()

我无法帮助您选择1,但使用
inspect
模块可能会选择2,请参阅。我想如果你想从一个单独的进程中检查一个内核,你会很困难,但是…

你能把感兴趣的变量保存到文件中吗?例如,使用
cPickle
,然后将它们加载到脚本中?我编辑了我的文章。事实上,我希望我的脚本实时显示变量,以查找笔记本服务器启动的所有内核,请查看。例如,NbServer.findall()中服务器的
:打印(server.sessions())
。然后在内核中,您可以设置一些内容,监听
post\u run\u单元
,将变量发送到您的进程。