迭代大文件并在磁盘上附加块占用所有内存

时间:2014-04-02 01:16:54

标签: python csv pandas bigdata

我有一个大约5GB压缩文件(32GB未压缩)和gzip,大约有200多万行。我有下面的pandas代码通过块并应用一些处理并迭代保存为一个csv。我不明白为什么这会在它完成之前逐渐耗尽我的所有RAM(32GB RAM EC2)。我假设我只是通过保存磁盘来避免使用RAM。我做错了什么或误解了这个过程?有没有更好的方法来做到这一点?

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 :(得分: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)
    
  • 并且还增加了操作系统设置的每个进程的内存限制。