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/