我读到 mmap 比 fileinput 更有优势,因为它会将一个页面读入内核页面缓存并在用户地址空间中共享该页面。而 fileinput 实际上将一个页面带入内核并将一行复制到用户地址空间。因此,文件输入有额外的空间开销。
所以,我打算转向 mmap,但我想从高级 python 黑客那里了解它是否提高了性能?
如果是这样,是否有类似的使用 mmap 的 fileinput 实现?
如果您知道,请指出任何开源代码。
谢谢
最佳答案
mmap 获取一个文件并将其保存在 RAM 中,以便您可以像字节数组或大数据结构一样对它进行索引。
如果您以“随机访问”方式访问您的文件,速度会快得多——即执行大量 fseek()、fread()、fwrite() 组合。
但如果您只是读入文件并处理每行一次(比方说),那么它不太可能明显更快。事实上,对于任何合理的文件大小(请记住,对于 mmap,它都必须适合 RAM——否则会发生开始降低 mmap 效率的分页),它可能是无法区分的。
关于python - mmap 与 fileinput 的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5483163/