在Python2.7中,当我将2.5GB文本文件中的所有数据加载到内存中以便更快地进行以下处理时:
>>> f = open('dump.xml','r')
>>> dump = f.read()
我得到以下错误:
Python(62813) malloc: *** mmap(size=140521659486208) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
Python为什么要为2563749237
字节的数据分配140521659486208
字节的内存?如何修复代码以使其加载所有字节?
我有大约3GB的内存空闲。该文件是一个Wiktionary xml转储文件。
根据一些快速的谷歌搜索,我发现this forum post似乎解决了您似乎遇到的问题。假设您运行的是基于错误代码的Mac或Linux,您可以尝试使用论坛帖子中建议的
gc.enable()
或gc.collect()
来实现垃圾收集。如果使用mmap,则可以立即将整个文件加载到内存中。
相关问题 更多 >
编程相关推荐