He leído que mmap es una ventaja que la entrada de archivos, porque leerá una página en el pagecache del kernel y compartirá la página en el espacio de direcciones del usuario. Mientras que, la entrada de archivo realmente trae una página al kernel y copia una línea al espacio de direcciones del usuario. Por lo tanto, existe esta sobrecarga de espacio adicional con la entrada de archivos.Ventajas de mmap vs fileinput
Por lo tanto, estoy planeando pasar a mmap, pero quiero saber si los hackers avanzados de python mejoran el rendimiento.
Si es así, ¿hay una implementación similar de la entrada de archivos que utiliza mmap?
Indíqueme cualquier código de código abierto, si conoce.
gracias
Esto es incorrecto. mmap: los archivos ed no tienen que caber en la RAM; deben caber en el espacio de direcciones del proceso. El espacio de direcciones disponible es de 2-3 GB para un proceso de 32 bits y muy grande para un proceso de 64 bits, independientemente de la cantidad real de RAM en la máquina. En Python de 64 bits, ¡es perfectamente razonable mapear un archivo de 100 GB! –
Baffe, vale, tienes razón, lo que quise decir es que "todo debe encajar en la RAM para evitar las ineficiencias que estás utilizando mmap para evitar en primer lugar". Lo cual, por supuesto, es una simplificación, pero sean razonables. Aquí estoy dando una regla general, no un tratado completo sobre el análisis de la localización en los algoritmos – AndrewStone
. No estoy seguro de a qué ineficiencias se refiere. mmap: si un archivo no lee todo el archivo del disco. Solo se leen las partes del archivo que realmente accede con el objeto devuelto desde mmap. –