Cuando abrimos un archivo usando Python, ¿se moverá todo el archivo a la RAM o solo el descriptor de archivo con la parte del archivo se moverá a la RAM?

Abrir un archivo NO lee ni carga implícitamente su contenido. Incluso cuando lo haga utilizando el protocolo de gestión de contexto de Python (la palabra clave with ).

Por ejemplo, si haces algo como:

con abierto (‘./ some_big_file.txt’, ‘r’) como f:
para cada_línea en f:
hacer_algo (cada_línea)

Entonces, la utilización máxima de la memoria no debería ser mucho mayor que la línea más larga del archivo (suponiendo que su función do_something () no esté haciendo nada para consumir memoria por cada línea que procese).

El módulo csv en las bibliotecas estándar de Python también facilita el manejo de sus datos un registro a la vez usando la función csv.reader () , por ejemplo. Así que ese no debería ser tu problema si lo estás usando correctamente.

Aquí hay un enlace a un artículo que procesa archivos CSV y XML muy grandes con las bibliotecas estándar de Python: archivos CSV y XML enormes en Python

Si necesita más ayuda, querrá reducir su código a algo adecuado para publicar para que podamos ver lo que está haciendo y, tal vez, descubrir dónde se está tropezando.

Si realmente está leyendo el contenido completo del archivo en una estructura de datos, entonces no es de extrañar que su uso de RAM llegue a su punto máximo. No es que Python ponga todo el contenido del archivo en RAM, sino que tú lo haces.

Como mencionó el usuario de Quora en su respuesta (y según su comentario a continuación), realmente parece que el problema radica en eso.

Debe considerar procesar cada fila del archivo CSV a su vez y “deshacerse de él” (al no mantenerlo en una estructura de datos) cuando haya terminado con su análisis.

Ciertamente no hace tal cosa. Todo lo que tiene que hacer para verificar es ejecutar lo siguiente y ver cómo se ve su uso de memoria.

con abierto (“ruta / a / a / grande / archivo”, “r”) como f:
datos = f.read (256)
while data! = “”:
datos = f.read (256)

Lo más probable es que esté llenando la memoria con su estructura de datos, aunque es imposible decirlo sin ver ningún código.

Asegúrese de estar utilizando secuencias de archivos desde el módulo io:
https://docs.python.org/2/librar

Creo que solo usando la función incorporada open () crea un objeto de archivo en la memoria, al menos en Python 2.7.

More Interesting

¿Por qué no aumentan los resultados de referencia después de usar el expansor de RAM de Roehsoft para aumentar la RAM en Android?

¿Cuáles son algunos de los mejores juegos de gráficos que puedo jugar en mi computadora portátil con Windows 10 que tiene 4 GB de RAM y un procesador Intel Core de 1.90 GHz?

¿Qué es más importante para juegos más rápidos, Ram o gráficos?

¿Cómo o por qué Samsung produce teléfonos de 4 GB de RAM con solo 16 GB de ROM?

¿Cuál sería el mejor procesador de su clase, RAM, HDD, placa base y cuánto podría costarme? Ver detalles para la configuración.

¿Puedo jugar a Assassin's Creed Syndicate con i7 6500u, 8 gb RAM, AMD Radeon R5 M335 4 GB?

¿Puedo jugar en 1080p en i3 6100 emparejado con GTX 1050ti y 8 gb de ram?

¿Cuál es el tamaño mínimo de RAM que debo buscar en una computadora si planeo usar Photoshop diariamente para mi trabajo?

¿Puedo enviar partes de chips de computadora (memoria de computadora: RAM, en este caso) sin usar materiales de envío antiestáticos?

¿Cuál es el mejor antivirus para un teléfono Android con solo 1 GB de RAM?

¿Qué es más importante en una velocidad vps, ram o CPU?

Cómo hacer que mi computadora portátil funcione más rápido

¿Cuánto tiempo pueden durar los datos almacenados en la RAM cuando una computadora está en modo de suspensión?

Cómo crear VM tomando recursos (RAM, CPU, etc.) desde múltiples máquinas físicas

¿Cuál es la diferencia entre IdeaPad 520S y 320S? No pude encontrar nada excepto RAM.