python - mmap 与 fileinput 的优点

标签 python performance

我读到 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/

相关文章:

Python NLTK 'LazyCorpusLoader' 对象不可调用

python - Selenium 在运行大约 500 次测试后崩溃

sql-server - 合并 vs Sargability

c - 使用 AVX2 查找元素索引 - 代码优化

java - 为什么将第一项添加到集合中比第二项慢得多?

performance - jdbc 批处理性能

python - Mysql 不适用于 python 3.6 和 django 1.9

python - python中复制函数的区别

python - 并行化 Python 的 reduce 命令

python - 如何使列表接受/n,以便在写入文件时不让所有内容都在同一行?