Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mmap与fileinput的优势_Python_Performance - Fatal编程技术网

Python mmap与fileinput的优势

Python mmap与fileinput的优势,python,performance,Python,Performance,我了解到mmap比fileinput更有优势,因为它将页面读入内核页面缓存,并在用户地址空间中共享页面。然而,fileinput实际上将一个页面带入内核,并将一行复制到用户地址空间。因此,fileinput会带来额外的空间开销 所以,我计划转移到mmap,但我想从高级python黑客那里知道它是否提高了性能 如果是,是否有类似的fileinput实现使用mmap 请告诉我任何开源代码,如果你知道的话 谢谢mmap将一个文件粘贴到RAM中,这样您就可以像字节数组或大数据结构一样对其进行索引 如果以

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

所以,我计划转移到mmap,但我想从高级python黑客那里知道它是否提高了性能

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

请告诉我任何开源代码,如果你知道的话


谢谢

mmap将一个文件粘贴到RAM中,这样您就可以像字节数组或大数据结构一样对其进行索引

如果以“随机访问”的方式访问文件,速度会快得多——这需要进行大量的fseek()、fread()、fwrite()组合


但是,如果您只是在中读取文件并处理每行一次(比如),那么速度就不太可能明显加快。事实上,对于任何合理的文件大小(请记住,使用mmap时,所有文件都必须适合RAM——或者发生分页,从而开始降低mmap的效率),它可能是无法区分的。

这是错误的。mmap:ed文件不需要放在RAM中——它们需要放在进程地址空间中。32位进程的可用地址空间为2-3 GB,64位进程的可用地址空间非常大,与机器中的实际RAM量无关。在64位Python上,mmap一个100 GB的文件是完全合理的!Baffe,好吧,你是对的,我的意思是“它必须适合RAM,以避免使用mmap首先要避免的低效”。当然,这本身有点简单,但请合理一点,我这里给出的是经验法则,不是一篇关于算法本地化分析的完整论文,我不太清楚你说的低效是什么意思。mmap:复制文件不会从磁盘读取整个文件。仅读取使用mmap返回的对象实际访问的文件部分。