[Python-es] Almacenamiento en disco automático y transparente
Francesc Alted
faltet en gmail.com
Lun Oct 28 13:26:27 CET 2013
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
Más información sobre la lista de distribución Python-es