我最近开始使用Jupyter Lab,我的问题是我使用的是相当大的数据集(通常数据集本身大约。计算机内存的1/4 )。经过几次转换,保存为新的Python对象后,我往往会耗尽内存。问题是,当我接近可用的RAM限制并执行任何需要另一个RAM空间的操作时,我的计算机就会死机,唯一的解决方法就是重新启动它。这是Jupyter Lab/Notebook的默认行为,还是我应该设置的一些设置?通常,我预计程序会崩溃(例如在RStudio中),而不是整个计算机崩溃
发布于 2019-10-23 16:50:00
发布于 2019-10-22 22:00:36
对于这个问题,最健壮的解决方案绝对是使用Docker容器。您可以指定将多少内存分配给Jupyter,如果容器耗尽内存,这根本不是什么大问题(只需记住经常保存,但这是不言而喻的)。
This blog会带你走完大部分的路。这里还有一些关于设置Jupyter Lab的说明,这些说明来自免费提供的、官方维护的Jupyter镜像:
https://medium.com/fundbox-engineering/overview-d3759e83969c
然后,您可以将本教程中所述的docker run
命令修改为(例如,对于3 3GB):
docker run --memory 3g <other docker run args from tutorial here>
有关坞站内存选项的语法,请参阅以下问题:
发布于 2019-10-17 07:10:54
我也在Jupyter Lab上使用非常大的数据集(3 3GB),在Labs上也遇到了同样的问题。不清楚您是否需要保持对转换前数据的访问,如果不需要,我已经开始使用未使用的大型数据帧变量的del
。del
从你的内存中删除变量。编辑**:我遇到的问题有多种可能性。当我使用远程jupyter实例时,以及在spyder中,当我执行大型转换时,我经常会遇到这种情况。
例如:
df = pd.read('some_giant_dataframe') # or whatever your import is
new_df = my_transform(df)
del df # if unneeded.
杰克,你可能也会发现这个thread on large data workflows很有帮助。我一直在研究Dask来帮助解决内存存储问题。
我在spyder和jupyter中注意到,当运行大内存控制台时,在另一个控制台上工作时通常会发生freezeup。至于为什么它只是冻结而不是崩溃,我认为这与内核有关。有几个内存issues open in the IPython github - #10082和#10117似乎最相关。一位用户here建议在jedi
中禁用制表符补全功能或更新绝地武士。
在10117中,他们建议检查get_ipython().history_manager.db_log_output
的输出。我有相同的问题,我的设置是正确的,但它值得检查
https://stackoverflow.com/questions/58400437
复制相似问题