programing

나중에 사용할 주피터(IPython) 노트북 세션을 피클 또는 저장하는 방법

skycolor 2023. 7. 26. 21:46
반응형

나중에 사용할 주피터(IPython) 노트북 세션을 피클 또는 저장하는 방법

Jupyter/Ipython 노트북에서 많은 시간이 소요되는 계산을 수행하여 더 큰 데이터 분석을 수행하고 있다고 가정해 보겠습니다.그러면 어떤 이유에서인지 주피터 로컬 서버 I을 종료해야 하지만 시간이 많이 걸리는 모든 계산을 다시 수행하지 않고 나중에 분석 작업으로 돌아가고 싶습니다.


내가 무엇을 할 것인가. 마음에 하기 좋아하는 것은pickle또는 전체 주피터 세션(모든 판다 데이터 프레임, np.array, 변수 등)을 저장하여 이전과 동일한 상태로 세션으로 돌아갈 수 있음을 알고 서버를 안전하게 종료할 수 있습니다.

그것이 기술적으로 가능한가요?제가 간과한 기본 제공 기능이 있습니까?


편집: 이 답변을 기반으로 다음이 있습니다.%store "경량 피클"이어야 하는 마법.그러나 변수는 다음과 같이 수동으로 저장해야 합니다.

#inside a ipython/nb session
foo = "A dummy string"
%store foo
보기 닫기, 커널 다시 시작
%store -r foor 기분 전환을 위한 r
print(foo) # "A dummy string"

이것은 제가 원하는 것에 상당히 가깝지만, 수동으로 해야 하고 다른 세션을 구별할 수 없기 때문에 덜 유용합니다.

딜이 당신의 질문에 잘 대답하는 것 같습니다.

pip install dill

노트북 세션 저장:

import dill
dill.dump_session('notebook_env.db')

노트북 세션 복원:

import dill
dill.load_session('notebook_env.db')

원천

(이것을 실제 답변으로 제공하기보다는 논평하고 싶지만, 논평하려면 더 많은 평판이 필요합니다.)

대부분의 데이터와 유사한 변수를 체계적인 방법으로 저장할 수 있습니다.제가 주로 하는 일은 모든 데이터 프레임, 배열 등을 판다에 저장하는 것입니다.HDF 스토어.노트북의 시작 부분에서 다음과 같이 선언합니다.

backup = pd.HDFStore('backup.h5')

그런 다음 새로운 변수를 생성할 때 저장합니다.

backup['var1'] = var1

마지막에, 아마도 좋은 생각일 것입니다.

backup.close()

서버 전원을 끄기 전에 선택합니다.다음에 노트북을 계속하려면 다음과 같이 하십시오.

backup = pd.HDFStore('backup.h5')
var1 = backup['var1']

사실, ipython 노트북에도 내장된 기능이 더 좋습니다.모든 것(예: 객체, 연결)을 이런 식으로 저장할 수는 없으며, 이렇게 많은 상용어구 코드로 노트북을 정리하기가 어렵습니다.

이 질문은 다음과 관련이 있습니다. IPython 노트북에서 캐시하는 방법은 무엇입니까?

개별 셀의 결과를 저장하기 위해 캐싱 마법이 유용합니다.

%%cache longcalc.pkl var1 var2 var3
var1 = longcalculation()
....

노트북을 다시 실행하면 이 셀의 내용이 캐시에서 로드됩니다.

이것은 당신의 질문에 정확하게 답하지는 않지만, 모든 긴 계산 결과가 빠르게 복구될 때 충분할 수 있습니다.노트북 상단에 있는 실행 버튼을 누르는 것과 결합하여 실행 가능한 해결책입니다.

캐시 마법은 아직 전체 노트북의 상태를 저장할 수 없습니다.제가 알기로는 "노트북"을 재개할 수 있는 다른 시스템은 아직 없습니다.이렇게 하려면 python 커널의 모든 기록을 저장해야 합니다.노트북을 로드하고 커널에 연결한 후 이 정보를 로드해야 합니다.

언급URL : https://stackoverflow.com/questions/34342155/how-to-pickle-or-store-jupyter-ipython-notebook-session-for-later

반응형