python中复制缓冲区时内存使用的优化

2024-04-26 10:25:20 发布

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

我必须复制文件并做一些简单的处理。我不能把整个文件读入内存,因为它太大了。我想出了一段代码如下:

buffer = inFile.read(buffer_size)
while len(buffer) > 0:
    outFile.write(buffer)
    simpleCalculations(buffer)
    buffer = inFile.read(buffer_size)

simpleCalculations过程与此上下文无关,但我担心缓冲区列表的后续内存分配。在某些硬件配置中,内存使用率非常高,这显然会导致机器死亡。我想重用缓冲区。这在Python2.6中是否可行?在


Tags: 文件内存代码列表readsizelen过程
2条回答

我不认为有什么简单的方法可以解决这个问题。file.read()方法每次调用时只返回一个新字符串。另一方面,一旦将buffer分配给新读取的字符串,则不必担心内存不足,以前读取的字符串不再有对它的任何引用,因此它的内存将自动释放(有关更多详细信息,请参见here)。在

Python是一个严格的引用计数环境,一旦不再有任何对它的引用,就会释放缓冲区。在

如果您担心物理RAM,但有空闲的地址空间,您可以mmap您的文件,而不是一次读一点。在

相关问题 更多 >