python - 内存错误

时间:2014-08-06 01:29:08

标签: python memory

当我尝试将大文本文件加载到内存中时,我得到了这个:

Python(24297,0xa0d291a8) malloc: *** mach_vm_map(size=717418496) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug 
MemoryError

导致它的代码是:

with open('list.txt') as f:
        total = sum(1 for _ in f)

是否有一种原生的python方式来处理这个问题?

1 个答案:

答案 0 :(得分:1)

狂野猜测:

您正在二进制文件上运行上述代码,该文件不包含(或极少数)新行。因此,读取一行的尝试读取一行非常长行。

请改为尝试:

with open('list.txt') as f:
    total = sum(block.count('\n')
                for block in iter(lambda: f.read(64*1024), ''))