On 10/28/13, 12:20 PM, Daπid wrote:
Tengo un objeto Python (pongamos una cadena de texto o un array de numpy) que puede crecer arbitrariamente, hasta, quizá, superar el límite de memoria del SO. Quiero mantenerla en memoria mientras sea posible, pero si llegara a crecer por encima de un cierto límite, se almacenaría en disco. El programa, sin embargo, vería el mismo objeto, y sería capaz de leer valores de la misma forma. ¿Es esto posible?

Con una cadena lo veo más o menos factible, sobrecargando los métodos que la extenderían para que, si supera el límite de memoria, vuelque a archivo; e igualmente los métodos __getitem__ fueran redirigidos a seek() y read(). Con un array, quizá me iría a EArray (extendable array) de PyTables.

Si, yo creo que un EArray sobrecargado te puede servir perfectamente para eso.



¿Hay algo ya hecho? ¿Alguna idea más inteligente y eficiente?

Hombre, no se exactamente para que quieres cargar lo mas possible el array en memoria, pero en esos casos yo lo que haria es guardar todo el array en disco y dejar que sea el sistema operativo, y no tu, quien decida que partes se cachean en memoria. A la larga es mas practico y eficiente.

--
Francesc Alted

_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a