python - 删除数据框但仍然丢失内存
问题描述
我有两个名为 df0(1.2 亿 obs)和 df1(5000 万 obs)的大型数据框。它们具有相同的 44 个变量(作为列)。我需要附加数据,以便新数据框有 120+50 = 1.7 亿个观察值和 44 列。
我用:
frames = [df0, df1]
df = pd.concat(frames, ignore_index=True)
or
df = df0.append(df1, ignore_index=True)
他们工作得很好。但是当我使用删除 df0 和 df1
del df0
del df1
系统不释放内存。我在stackoverflow上读到这对于python/其他语言来说是典型的。但是,在此之后我遇到了内存问题,python 没有释放这个内存。
关于如何避免吃掉这么多内存的任何建议?
已解决:正如 juanpa.arrivillaga 所指出的,幸存的引用将意味着数据框不会被删除。一旦我删除了对数据框的所有引用,一旦删除了数据框,内存就会被释放。
解决方案
import gc
del df0
del df1
gc.collect()
原因是当你删除 df0 和 df1 时,程序只删除对内存中数据的引用。当你执行 gc.collect() 时,它会检查内存中尚未使用的那些数据并删除它们。
推荐阅读
- excel - 如果我使用意大利语版本,是否可以为 Excel 函数\公式使用英文名称?
- python - 在python中为数据框的滚动数据找到不小于x的最小数字
- flutter - 每次从 Android 设备上的摄像头捕获图像时,Flutter 应用都会重新启动
- bash - 在带有变量的 bash 脚本中使用 rsync
- json - Spring 向 JS 客户端返回乱码
- python - Python,django:我不知道如何将我所做的简单基本功能与用户输入的值联系起来
- python - Python将A系列数据分组以构建箱线图
- azure - 如何创建具有较小存储空间的 Azure VM
- javascript - nodeJS - 通过 CLI 与后台运行的电子应用程序通信
- python - 无法从类内的函数中获取变量(python)