On 10/28/13, 1:49 PM, Daπid wrote:
2013/10/28 Kiko <kikocorre...@gmail.com <mailto:kikocorre...@gmail.com>>

    Si los datos son lo suficientemente grandes como para que no
    quepan en memoria


El problema es que, en principio, no sé si va a ser así. Depende de los datos en concreto y de la RAM instalada en la máquina (cualquier cosa entre 4 y 16 GB). Me gustaría poder evitar el disco mientras fuera posible, pero sin que el programa sea asesinado.

Creeme, a no ser que tengas requerimientos muy precisos, mucho mejor que se encargue el SO.




2013/10/28 Francesc Alted <fal...@gmail.com <mailto:fal...@gmail.com>>

        ¿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.


Cierto, me olvidaba de la caché. Mi idea iba más por usar, digamos, "backend en memoria" hasta que llegara a un cierto límite, en el que pasaría a guardarse en disco. Pero quizá, usando directamente la opción en disco, el SO mantendrá el contenido en caché mientras sea lo suficientemente pequeño, y el rendimiento será lo suficientemente bueno.

Otra opción sería carray, que tiene la ventaja de ofrecer exactamente la misma API para memoria que para disco.

http://carray.pytables.org/docs/manual/tutorial.html

Veré cuál se ajusta más a mis especificaciones. Gracias por las ideas.

Bueno, yo tambien habia pensado en carray :). De todas maneras, el carray lo tengo medio abandonado porque basicamente lo hemos integrado como un subpaquete en el proyecto Blaze (blaze.pydata.org). El subpaquete se llama BLZ (blaze.blz), y se trata basicamente de carray, aunque con algunos retoques y mejoras. El manual de BLZ no lo encontraras en la web de Blaze ya que esta pensado para no ser visible directamente por el usuario final, sino mas bien como una forma de almacenaje mas de Blaze. Pero basicamente se puede tomar el manual de carray y reemplazando `carray` por `barray` y `ctable` por `btable` mas o menos todo deberia funcionar tal cual.

--
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/

Responder a