jupyter-notebook - Ubuntu 上的 Jupyter 笔记本不会释放内存
问题描述
我在 Jupyter 笔记本单元格中有一段代码(Python 3.7),它生成一个包含 numpy 数组的 pandas 数据框(df)。
我只是通过查看 Ubuntu 中预装的系统监视器应用程序来检查 df 的内存消耗。
问题是,如果我第二次运行单元格,即使将 df 分配给同一个变量,内存消耗也会加倍。
如果我多次运行同一个单元,系统内存不足,内核将自行染色。
使用del df
或gc.collect()
不会释放内存。
重新启动笔记本内核是释放内存的唯一方法。
在实践中,我希望内存大致保持不变,因为我只是一遍又一遍地将新的 df 重新分配给同一个变量。
事实上,只有当我在 linux 机器和笔记本上运行代码时,内存才会累积。如果我通过终端运行相同的代码python script.py
,或者如果我在 macOS 上运行相同的笔记本,内存压力不会改变,我可以多次运行同一个单元并且占用的内存保持稳定(如预期的那样)。
你能帮我指出问题出在哪里以及如何解决吗?
PS Python 和 Jupiter 都在 Ubuntu 18.04 上随 Anaconda 2018.12 一起安装。
我在 Ubuntu 社区上问过同样的问题,因为我不确定这是否与 python 本身严格相关,但到目前为止我没有得到任何答案。
解决方案
推荐阅读
- java - 如何避免 Zuul 成为瓶颈
- python - pymongo - 在多个条件下使用 find
- reactjs - 带有谷歌 IMA 插件的 reactJS 中的 VideoJS
- python - 访问一个类的对象以查看它是否存在于另一个类中
- javascript - 防止 history.replaceState 附加到 url
- c# - 为什么我的内存分配方法会抛出 Stack Overflow?
- c# - 简单的聊天应用程序在尝试托管 C#.NET 时崩溃
- c - 以正确的方式从 Object Dump 中获取 Shellcode
- shopify - 以集合为目标 - 液体
- c++ - 将 unordered_map 与 Catch2 谓词一起使用时类型不匹配