[Python-es] Almacenado de datos

Daπid davidmenhur en gmail.com
Mar Mar 6 19:42:15 CET 2012


Tras haber estado mirando los tutoriales de PyTables he visto que el
lo único complicado con respecto a usar ASCII es

fusionar las bases de datos, y estoy seguro de que hay alguna forma simple.

A cambio, tiene varias ventajas:

 - Algunos parámetros son función de otros. Puedo incluir algunos
ahora, como una columna más, pero es posible que en el futuro me
aparezcan otros. Igualmente, se puede hacer desde los ASCII, pero se
vuelve más farragoso.
 - Es más seguro referirse a un parámetro como x['N'] que x[0]. Podría
usar un diccionario, pero sería complicarlo.
 - Aprendo a usar DB.

En definitiva, si logro solucionar la fusión, me iré por PyTables.


Muchas gracias por Paralell Python, me será muy útil. Volveré por aquí
con más problemas.

2012/3/5 Inigo Aldazabal Mensa <inigo_aldazabal en ehu.es>:
> El Jueves, 1 de Marzo de 2012 a las 22:12,  Daπid escribió:
>> He estado analizando las respuestas y repensando algunas cuestiones de
>> base. En primer lugar, reespecificando el problema:
>>
>> -Por cada evento tengo que registrar unas tres o cuatro variables
>> independientes (depende del tipo que sea), los parámetros que yo fijo
>> al hacer la simulación: n, p, z.
>>
>> -En cada caso, guardaré cinco medidas de cada evento, los resultados
>> de mi simulación: C, L, S, M, Mbarra.
>>
>> El total es la ristra (n, p, z, C, L, S, M, Mb)
>>
>> Mi objetivo es recuperar de la forma más sencilla posible, todos los
>> valores de M para cada n fijado z (por ejemplo).
>>
>> Hacer esto en Numpy se me va a volver molesto porque el número de
>> parámetros es más elevado.
>
> ¿Eso no se puede hacer fácil con máscaras? Aunque no se mucho de eso la
> verdad:
>
> In [42]: a
> Out[42]:
> array([[ 0,  1,  2,  3],
>       [ 4,  5,  6,  7],
>       [ 8,  9, 10, 11],
>       [ 4,  1,  1,  1]])
>
> In [43]: a[a[:,0]==4.,:]
> Out[43]:
> array([[4, 5, 6, 7],
>       [4, 1, 1, 1]])
>
>
>>
>>
>> Además, he conseguido acceso a un grid de ordenadores en la
>> universidad, lo que supone dos cambios:
>>
>> - El número de datos que voy a manejar va a ser mucho mayor. Quizá los
>> ficheros de texto se vayan quedando fuera.
>
> Sigo pensando que no tendrás mucho problemas con ficheros por ejemplo de
> decenas de megas.
>
>> - Dado que mi problema es embarazosamente paralelizable, voy a tener
>> cuatro programas corriendo en el mismo ordenador, y una decena de
>> ordenadores en total. Una de dos, o mi base de datos admite varios
>> accesos de escritura a la vez (pyTables dice que no muy bien). La
>> pregunta ahora es: ¿pueden ser fusionadas varias bases de datos
>> fácilmente? Esto es algo que no he sabido encontrar en la
>> documentación de ninguna de las opciones.
>
> Si lo vas a lanzar a un cluster o grid con ascii lo tienes chupado, al
> menos tal como cuentas: cada proceso escribe su fichero (con su nombre
> concreto distinto al resto, claro) y al terminar los trabajos recopilas
> todos los ficheros que puedes pegar directamente. Si soy pesado con esto
> es porque me parece que es la forma mas sencilla de hacerlo, a no ser que
> sepas con seguridad que vas a tener limitaciones. Puedes hacer pruebas
> generando archivos fictícios antes de decidir.
>
> Si vas a lanzar los programas con cada core/proceso corriendo el monte
> carlo con distintos parámetros, te puede ser útil el módulo Parallel
> Python http://www.parallelpython.com/. Yo lo he usado precisamente para
> cálculos así. Si haces que a tu programa de cálculo le puedas pasar los
> parámetros por línea de comandos simplemente haces un bucle sobre los
> parámetros que te interesen y Parallel Python los va lanzando a medida que
> acaban, tipo sistema de colas. El programa que ejecuta parallel pyhton
> llamando a tu propio programa lo puedes mandar a colas sin problemas, y en
> este caso también es fácil recoger los resultados si lo diriges
> directamente a stdout. Es mucho mas fácil que tener que implementar tu
> todo con MPI por ejemplo.
>
> En su web hay ejemplos, y si te interesa te puedo pasar algo de lo que
> hice.
>
> Iñigo
>
>>
>>
>> Nótese que del tema soy un absoluto desconocedor, así que no sé si lo
>> que estoy pidiendo es demasiado o lo mínimo para una BD. Tampoco sé
>> cómo se llaman las cosas que quiero hacer, así que me es difícil
>> encontrar las palabras clave por las que buscar.
>>
>>
>> Muchas gracias a todos.
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/


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