我必须复制文件并做一些简单的处理。我不能把整个文件读入内存,因为它太大了。我想出了一段代码如下:
buffer = inFile.read(buffer_size)
while len(buffer) > 0:
outFile.write(buffer)
simpleCalculations(buffer)
buffer = inFile.read(buffer_size)
simpleCalculations过程与此上下文无关,但我担心缓冲区列表的后续内存分配。在某些硬件配置中,内存使用率非常高,这显然会导致机器死亡。我想重用缓冲区。这在Python2.6中是否可行?在
我不认为有什么简单的方法可以解决这个问题。
file.read()
方法每次调用时只返回一个新字符串。另一方面,一旦将buffer
分配给新读取的字符串,则不必担心内存不足,以前读取的字符串不再有对它的任何引用,因此它的内存将自动释放(有关更多详细信息,请参见here)。在Python是一个严格的引用计数环境,一旦不再有任何对它的引用,就会释放缓冲区。在
如果您担心物理RAM,但有空闲的地址空间,您可以mmap您的文件,而不是一次读一点。在
相关问题 更多 >
编程相关推荐