기존 ipython 커널에서 모든 로컬 변수를 가져올 수있는 파이썬 스크립트를 작성하고 싶습니다.ipython 커널에서 파이썬 스크립트로 변수 가져 오기
ipython API를 살펴 보았지만 실제로 원하는 것을 찾지 못했습니다. 여기
몇 가지 더 정확한 질문은 다음과 같습니다1 - 함수가 기존의 모든 활성 ipython 커널을 나열 할 ipython의 API에서 있습니까?
2 - embed ipython을 시작하지 않고 커널에서 모든 변수를 가져올 수 있습니까?
편집 :이 뒤에 아이디어는 실시간으로 주어진 커널 로컬/글로벌 변수를 표시 할 수 텍스트 모드에서 파이썬의 변수 탐색기를 확인하는 것입니다 편집
: 나는 다음과 같은 클래스를 썼다 나는 원하는 것을 해낸다. 그러나 나는 그것이 최적이 아니라고 생각한다. 특히 get_iopub_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()
관심 변수를 파일에 대신 저장할 수 있습니까? 예를 들어,'cPickle'을 사용하고, 스크립트에 이것을 적재 하시겠습니까? –
내 게시물을 편집했습니다. 실제로 스크립트에 실시간으로 변수를 표시하고 싶습니다. –
노트북 서버에서 시작한 모든 커널을 찾으려면 [this code] (https://github.com/takluyver/nbmanager/blob/master/nbmanager)를보십시오. /api.py). 예 : 'for NbServer.findall() : print (server.sessions())'를 호출합니다. 그런 다음 커널에서'post_run_cell' [event] (http://ipython.readthedocs.io/en/stable/config/callbacks.html)을 듣고 뭔가를 설정하여 프로세스에 변수를 보낼 수 있습니다. –