El 28 de octubre de 2013 12:20, Daπid <davidmen...@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.
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/