Estaba ejecutando un código de programación dinámico (tratando de usar fuerza bruta para refutar la conjetura de Collatz = P) y estaba usando un dict para almacenar las longitudes de las cadenas que ya había calculado. Obviamente, se quedó sin memoria en algún momento. ¿Hay alguna manera fácil de usar alguna variante de un dict
que va a colocar partes de sí mismo en el disco cuando se quede sin espacio? Obviamente, será más lento que un dict en memoria, y probablemente terminará consumiendo mi espacio en el disco duro, pero esto podría aplicarse a otros problemas que no son tan inútiles.Diccionario basado en disco de Python
Me di cuenta de que un diccionario basado en disco es prácticamente una base de datos, así que implementé manualmente uno usando sqlite3, pero no lo hice de ninguna manera inteligente y tuve que buscar cada elemento en el DB en una tiempo ... fue aproximadamente 300 veces más lento.
¿Es la forma más inteligente de crear solo mi propio conjunto de dictados, manteniendo solo uno en la memoria a la vez, y desplazándolos de manera eficiente?
¿Cómo utilizaría exactamente la indexación de sqlite? la forma en que lo hice aquí fue crear una tabla como esta: "cur.execute ('create table vals (indx INTEGER, chainlen INTEGER)')", luego I "cur.execute ('SELECT * from vals where indx =% d '% i) "para una búsqueda. – Claudiu
create table vals (indx INTEGER PRIMARY KEY, chainlen INTEGER) –
@Claudiu - mi programa fue tal que pude implementar algo de lógica en la capa de la base de datos, así que pude dejar que el DB filtre y cosas por el estilo; era más que una tienda tonta. –