[Python-es] Almacenamiento en disco automático y transparente

Kiko kikocorreoso en gmail.com
Lun Oct 28 12:45:16 CET 2013


El 28 de octubre de 2013 12:20, Daπid <davidmenhur en gmail.com> escribió:

> 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.
>
> ¿Hay algo ya hecho? ¿Alguna idea más inteligente y eficiente?
>
>
Si los datos son lo suficientemente grandes como para que no quepan en
memoria las opciones lógicas que se me ocurren son netCDF4 y/o HDF5. Si lo
que interesa es la eficiencia de acceso a datos, dependiendo de como vayas
acceder a tus datos sería mejor uno u otro formato. Por ejemplo, netCDF4
está optimizado para acceder a pequeñas partes de datos de un fichero más
grande de forma eficiente y sin necesidad de cargar toda la info en
memoria. También existen parallel-netCDF4 y parallel-HDF5 para optimizar
cosas pero son cosas que nunca he usado. Le puedes echar un ojo a google.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20131028/70922a49/attachment.html>


Más información sobre la lista de distribución Python-es