遍历大文件并追加块到磁盘占用所有内存

2 投票
1 回答
926 浏览
提问于 2025-04-18 00:56

我有一个大约5GB的压缩文件(解压后是32GB),里面有大约2亿多行数据。我用下面的pandas代码分块处理这些数据,并逐步保存为一个csv文件。但是我不明白的是,为什么在处理的过程中我的内存会逐渐被用完(我的EC2服务器有32GB内存)。我原以为通过直接保存到磁盘可以避免占用太多内存。难道我做错了什么,或者对这个过程理解有误?有没有更好的方法来处理这个问题?

chunker = pd.read_table('filename.txt.gz', compression='gzip', 
    delim_whitespace=True, chunksize=10000, iterator=True, header=None)

for chunk in chunker:
    process chunk

with open(fout, 'a') as filename:
    chunk.to_csv(filename)
    filename.close()

1 个回答

0

你可以尝试以下几种方法:

  • 通过设置 low_memory = False 来增加内存使用。

    chunker = pd.read_table('filename.txt.gz', compression='gzip',\ 
              low_memory = False, delim_whitespace=True, chunksize=10000,\
              iterator=True, header=None)
    
  • 同时,也可以提高操作系统为每个进程设置的内存限制。

撰写回答