假设我在Jupyter/Ipython笔记本上做了一个更大的数据分析,完成了大量耗时的计算。然后,出于某种原因,我不得不关闭jupyter本地服务器I,但我想稍后再进行分析,而不必再次进行所有耗时的计算。
我会
技术上可能吗?是否有我忽略的内置功能?
编辑:根据这个答案,有一个%store
magic,应该是“轻量级pickle”。但是,您必须手动存储变量,如下所示:
#在ipython/nb会话中
foo=“一个伪字符串”
%store foo
关闭seion,重新启动内核%store-r foo
\r刷新打印(foo)#“一个伪字符串”
这与我想要的非常接近,但是必须手动操作,并且无法区分不同的会话,这使得它不太有用。
这个问题涉及:如何在IPython笔记本中缓存?
为了保存单个单元格的结果,缓存魔法派上了用场。
%%cache longcalc.pkl var1 var2 var3
var1 = longcalculation()
....
重新运行笔记本时,将从缓存中加载此单元格的内容。
这并不能完全回答您的问题,但当所有冗长计算的结果都能快速恢复时,这可能就足够了。对我来说,再加上点击笔记本顶部的全速运行按钮,这是一个可行的解决方案。
缓存魔法还不能保存整个笔记本的状态。据我所知,目前还没有其他系统可以恢复“笔记本”。这需要保存python内核的所有历史记录。加载笔记本并连接到内核后,应加载此信息。
(我宁愿发表评论,也不愿把这作为一个实际的答案,但我需要更多的声誉来发表评论。)
您可以系统地存储大多数数据,如变量。我通常做的是将所有数据帧、数组等存储在pandas中。HDFStore。在笔记本的开头,声明
backup = pd.HDFStore('backup.h5')
然后在产生新变量时存储它们
backup['var1'] = var1
最后,也许是个好主意
backup.close()
在关闭服务器之前。下次要继续使用笔记本时:
backup = pd.HDFStore('backup.h5')
var1 = backup['var1']
说实话,我更喜欢ipython笔记本的内置功能。你不能用这种方式保存所有的东西(例如对象、连接),而且用这么多的样板代码很难让笔记本有条理。
我认为迪尔很好地回答了你的问题。
pip install dill
保存笔记本会话:
import dill
dill.dump_session('notebook_env.db')
还原笔记本会话:
import dill
dill.load_session('notebook_env.db')
来源
问题内容: 假设我正在Jupyter / Ipython笔记本中进行较大的数据分析,并且完成了大量耗时的计算。然后,由于某种原因,我必须关闭jupyter本地服务器I,但是我想稍后再进行分析,而不必再次进行所有耗时的计算。 我想什么 想 爱做的是或存储整个Jupyter会话(所有大熊猫dataframes,np.arrays,变量,…),所以我可以放心地关闭服务器知道我可以在完全相同的状态返回到我
什么是保持IPython笔记本版本控制的好策略? 笔记本格式非常适合进行版本控制:如果想要对笔记本和输出进行版本控制,那么这种方式非常有效。当人们只想对输入进行版本控制时,麻烦就来了,不包括单元输出(也称为“构建产品”),单元输出可以是大的二进制blob,尤其是电影和情节。特别是,我试图找到一个好的工作流程: 允许我在包括或排除输出之间进行选择, 防止我在不需要时意外提交输出, 允许我将输出保存在
我回顾了各种相关问题,包括 如何让MathJax在ipython笔记本中启用mhchem扩展 但我不能让它工作。。。 我的测试用例很简单 期待直立的$\pi$,但目前只是'\uppi'回来了。 我已经尝试了以下使用细胞魔法 这会生成
问题内容: 我在Windows 10上使用带Python3的jupyter笔记本。我的计算机具有8GB RAM,至少4GB RAM是可用的。 但是当我想使用以下命令制作大小为6000 * 6000的numpy ndArray时 : 我认为这不会使用超过100MB的RAM。我试图更改数字以查看发生了什么。我可以做的最大数组是(5000,5000)。在估计需要多少RAM时是否犯了错误? 问题答案: J
问题内容: 在IPython / Jupyter Notebook中运行的大多数语言内核的错误报告都指出发生错误的行;但是(至少默认情况下)在笔记本电脑中未显示行号。 是否可以将行号添加到IPython / Jupyter Notebook? 问题答案: -在CodeMirror区域中切换行号。有关其他键盘快捷键,请参见快速帮助。 详细信息- (或)将您带入命令模式,然后按键应切换当前单元格行号的
当我打开Jupyter笔记本(以前是IPython)时,它默认为。 我如何将此更改为其他位置?
笔记本格式非常适合版本控制:如果想要对笔记本和输出进行版本控制,那么这就很好地工作了。当你只想对输入进行版本控制,而不包括单元输出(也就是“构建产品”)时,麻烦就来了,这些单元输出可以是大的二进制blob,特别是对于电影和情节来说。特别是,我正在努力找到一个好的工作流程,它: 允许我在包含或排除输出之间进行选择, 防止我在不想要输出时意外提交输出, 允许我在本地版本中保留输出, 允许我使用版本控制