遍历大文件并追加块到磁盘占用所有内存
我有一个大约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)
同时,也可以提高操作系统为每个进程设置的内存限制。