mmap与fileinput的优点

时间:2011-03-30 07:20:52

标签: python performance

我读到mmap比fileinput更有优势,因为它会将页面读入内核pagecache并在用户地址空间中共享页面。然而,fileinput实际上将页面带入内核并将一行复制到用户地址空间。因此,fileinput存在额外的空间开销。

所以,我打算转到mmap,但我想从高级python黑客那里知道它是否能提高性能?

如果是这样,是否有类似的fileinput实现使用mmap?

如果您知道,请指出任何开源代码。

谢谢

1 个答案:

答案 0 :(得分:1)

mmap接收一个文件并将其粘贴到RAM中,以便您可以将其编入索引,如字节数组或大数据结构。

如果以“随机访问”方式访问文件,它会快得多 - 这就是做了很多fseek(),fread(),fwrite()组合。

但是如果你只是在读取文件并处理每一行(比方说),那么它不太可能明显更快。实际上,对于任何合理的文件大小(记住使用mmap,它都必须适合RAM - 或者发生分页,这会降低mmap的效率),它可能无法区分。