读取大于2G的文件时出现内存错误

2024-09-28 01:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

单个文件的大小大于2G。 我打电话给open(f, "rb").read() 记忆错误。 我打电话给open(f, "rb").read(1<<30) 好的

如何消除2G限制?我有足够的记忆力——16克


Tags: 文件记忆read错误openrb记忆力
3条回答

即使您的文件可能只有2GB,但读取它的开销可能会导致使用的内存远远超过2GB。在

正如@itaypk在评论中所说,32位可执行文件被限制为2GB的可访问ram(2^31)。为了利用额外的RAM,您需要运行64位版本的Python。在

根据您需要对文件执行的操作,您可能不需要完全读取它。您可以逐步完成:

with open('huge_file.txt') as f:
    for line in f:
       print line # print one line at a time

上面的循环不会耗尽系统上的所有可用内存。在

使用内存映射文件(^{})怎么样?在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()

相关问题 更多 >

    热门问题