大小超过2G的单个文件。
我打电话给open(f, "rb").read()
的MemoryError。
我打电话给open(f, "rb").read(1<<30)
行
如何消除2G限制?我有足够的记忆--16G
答案 0 :(得分:4)
使用内存映射文件(mmap
)怎么样? documentation on python.org中有一个很好的例子。它改编如下。
with open(f, "rb") as fi:
# memory-map the file, size 0 means whole file
mm = mmap.mmap(fi.fileno(), 0)
# Do stuff
mm.close()
答案 1 :(得分:2)
正如@itaypk在评论中所说,32位可执行文件仅限于2GB的可访问内存(2 ^ 31)。为了利用额外的RAM,您需要运行64位版本的Python。
根据您对文件的操作,您可能不需要完全阅读。你可以逐步完成它:
with open('huge_file.txt') as f:
for line in f:
print line # print one line at a time
上述循环不会耗尽系统上的所有可用内存。
答案 2 :(得分:0)
即使您的文件可能只有2GB,读取它的开销也可能导致使用的内存远远超过2GB。