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@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/