python - ¿Pickle puede manejar archivos más grandes que la memoria RAM instalada en mi máquina?
python-3.x textblob (2)
Desafortunadamente, esto es difícil de responder con precisión sin probarlo en su máquina.
Aquí hay algunos pensamientos iniciales:
No hay un límite de tamaño inherente que el módulo Pickle impone, pero está superando los límites de su uso previsto. No está diseñado para objetos grandes individuales. Sin embargo, ya que está usando Python 3.5, podrá aprovechar el PEP 3154 que agrega mejor soporte para objetos grandes. Debes especificar pickle.HIGHEST_PROTOCOL cuando pickle.HIGHEST_PROTOCOL tus datos.
Es probable que tenga un gran impacto en el rendimiento porque está tratando de lidiar con un objeto que es 3 veces el tamaño de su memoria. Su sistema probablemente comenzará a intercambiarse, y posiblemente incluso a sacudirse. La memoria RAM es tan barata en estos días, que aumentarla por lo menos a 2 GB debería ayudar significativamente.
Para manejar el intercambio, asegúrese de tener suficiente espacio de intercambio disponible (una partición de intercambio grande si está en Linux, o suficiente espacio para el archivo de intercambio en su partición primaria en Windows).
Como muestra el comentario de pal sch , Pickle no es muy amigable con el consumo de RAM durante el proceso de decapado, por lo que es posible que tenga que lidiar con Python intentando obtener incluso más memoria del sistema operativo que los 1.5 GB que podemos esperar de su objeto.
Dadas estas consideraciones, no espero que funcione muy bien para ti. Recomiendo encarecidamente actualizar la memoria RAM en su máquina de destino para que esto funcione.
Estoy usando pickle para guardar en el disco mi clasificador de NLP construido con la biblioteca TextBlob.
Estoy usando pickle después de muchas búsquedas relacionadas con esta pregunta . En este momento estoy trabajando localmente y no tengo problemas para cargar el archivo pickle (que es de 1.5Gb) con mi máquina de memoria i7 y 16gb RAM. Pero la idea es que mi programa, en el futuro, tenga que ejecutarse en mi servidor que solo tiene 512 Mb de RAM instalada.
¿Puede Pickle manejar un archivo tan grande o enfrentaré problemas de memoria?
En mi servidor tengo Python 3.5 instalado y es un servidor Linux (no estoy seguro de qué distribución).
Lo pregunto porque en este momento no puedo acceder a mi servidor, por lo que no puedo intentar averiguar qué sucede, pero al mismo tiempo tengo dudas si puedo mantener este enfoque o si tengo que encontrar otro soluciones
No veo cómo podría load un objeto en la RAM que excede la RAM. es decir, los bytes(num_bytes_greater_than_ram)
siempre MemoryError
un MemoryError
.