mmap相较于fileinput的优势

5 投票
1 回答
2252 浏览
提问于 2025-04-16 14:42

我看到有人说,mmap比fileinput更有优势,因为mmap会把一页数据读入内核的页面缓存,并且在用户的地址空间中共享这页数据。而fileinput则是把一页数据带入内核,然后再把一行数据复制到用户的地址空间。所以,fileinput会多占用一些空间。

所以,我打算使用mmap,但我想问问那些高级的Python高手,这样做会提升性能吗?

如果会的话,有没有类似fileinput的实现可以使用mmap?

如果你知道的话,请推荐一些开源代码给我。

谢谢!

1 个回答

1

mmap 是一种把文件放到内存中的方法,这样你就可以像操作字节数组或者一个大数据结构一样来访问它。

如果你需要随机访问文件,比如频繁使用 fseek()、fread() 和 fwrite() 这些操作,那么使用 mmap 会快很多。

但是,如果你只是一次性读取文件并处理每一行(比如说),那么它的速度提升可能不会太明显。实际上,对于一般大小的文件(记住,使用 mmap 的话,文件必须完全放进内存里,否则会出现分页,这样会降低 mmap 的效率),它的速度可能几乎没有区别。

撰写回答