python - tutorial - spacy
Cómo manejar la memoria insuficiente con Python (2)
Tengo enormes diccionarios que manipulo. Más de 10 millones de palabras son hash. Es demasiado lento y en algún momento se queda sin memoria.
¿Hay una mejor manera de manejar esta enorme estructura de datos?
No estoy seguro de lo que tus palabras señalan, pero supongo que son estructuras bastante grandes, si la memoria es un problema.
Resolví un problema de Python MemoryError una vez al cambiar Python de 32 bits a Python 64 bits . De hecho, algunas estructuras de Python se habían vuelto grandes para el espacio de direcciones de 4 GB. Es posible que desee probar eso, como una solución potencial simple para su problema.
Sí. Se llama una base de datos. Como un diccionario funcionaba para usted (aparte de los problemas de memoria), supongo que una base de datos sqlite funcionaría bien para usted. Puede usar sqlite3 con bastante facilidad y está muy bien documentado.
Por supuesto, esto solo será una buena solución si puede representar los valores como algo así como json o si está dispuesto a confiar en los datos en escabeche de un archivo local. Tal vez deberías publicar detalles sobre lo que tienes en los valores del diccionario. (Supongo que las teclas son palabras, si no, corrígeme)
También podría considerar no generar todo el diccionario y solo procesarlo en fragmentos. Esto puede no ser práctico en su caso de uso particular (a menudo no es el tipo de cosa que desafortunadamente usan los diccionarios) pero si puede pensar en una forma, puede valer la pena rediseñar su algoritmo para permitirlo.