[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