将大文本文件加载到 Python 列表时管理内存

问题描述

我有一个 1.5 GB 的文本文件,我使用以下代码将其从磁盘加载到内存中

docs = []
with open("full_text_corpus.txt","r") as file:
  for line in file:
    docs.extend((line.strip().strip("][").replace("'","")).split(","))

使用下面的代码检查 docs 变量占用的大小给了我 1.5GB 代码

from sys import getsizeof
print(f"Size of docs list is {getsizeof(docs) / (1024 **3)} GB")

我在 Google Colab 上运行它,但它显示占用的 RAM 大约为 14GB,这怎么可能?

如果我运行此代码,它也会给我 14.65 GB。 代码

import os,psutil
process = psutil.Process(os.getpid())
print(process.memory_info().RSS / (1024**3))  # in bytes 

我无法理解这是如何工作的?如果 docs 变量只有 1.5GB,为什么要使用 14GB 的内存?有没有办法释放内存?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)