2010-01-12 22 views
5

Python parece tener many different packages available para ayudar a uno en el procesamiento paralelo en un sistema basado en SMP o en un clúster. Estoy interesado en crear un sistema de servidor cliente en el que un servidor mantenga una cola de trabajos y los clientes (locales o remotos) conecten y ejecuten trabajos hasta que la cola esté vacía. De los paquetes enumerados anteriormente, ¿cuál es el recomendado y por qué?Bibliotecas de procesamiento paralelo de Python

Editar: En particular, he escrito un simulador que toma algunas entradas y procesa las cosas por un tiempo. Necesito recopilar suficientes muestras de la simulación para estimar una media dentro de un intervalo de confianza especificado por el usuario. Para acelerar las cosas, quiero poder ejecutar simulaciones en muchos sistemas diferentes, cada uno de los cuales informa al servidor en algún intervalo con las muestras que han recopilado. El servidor luego calcula el intervalo de confianza y determina si el proceso del cliente debe continuar. Una vez que se han recopilado suficientes muestras, el servidor finaliza todas las simulaciones del cliente, reconfigura la simulación en función de los resultados del pasado y repite los procesos.

Con esta necesidad de intercomunicación entre los procesos del cliente y del servidor, me pregunto si la programación por lotes es una solución viable. Lo siento, debería haber sido más claro para empezar.

+0

parece que está buscando un programador? –

Respuesta

2

tener un ir con ParallelPython. Parece fácil de usar y debe proporcionar la interfaz de trabajos y colas que desee.

0

Dado que etiquetó su pregunta "informática científica", y menciona un clúster, una especie de envoltorio MPI parece ser la elección obvia, si el objetivo es desarrollar aplicaciones paralelas como se podría adivinar por el título. Por otra parte, el texto en su pregunta sugiere que desea desarrollar un programador por lotes. Entonces, realmente no sé qué pregunta estás haciendo.

+0

No habría interacción entre los procesos del cliente, pero la cola/servidor cambiaría en función de los resultados individuales del proceso del cliente. Solo necesito poder administrar un montón de trabajos dinámicamente en muchas estaciones de trabajo. –

+0

Oh. En ese caso, lo que la mayoría de la gente hace es tener scripts para enviar muchos trabajos a un programador batch existente como cóndor o SLURM, analizar el resultado y, si es necesario, enviar nuevos trabajos, etc. Eso es mucho menos esfuerzo que escribir un programador por lotes personalizado. – janneb

0

La forma más sencilla de hacer esto sería simplemente enviar las muestras intermedias a archivos separados (o una base de datos) cuando terminen, y tener un proceso de vez en cuando sondear estos archivos de salida para ver si son suficientes o si hay más trabajos necesita ser enviado.

1

También hay ahora dos envolturas de Python diferentes en todo el mapa/reducir marco Hadoop:

http://code.google.com/p/happy/

http://wiki.github.com/klbostee/dumbo

map/reduce es un patrón de desarrollo agradable con un montón de recetas para la resolución de los patrones comunes de problemas

Si aún no dispone de un clúster, sí Hadoop es agradable, ya que tiene la programación completa de trabajo, distribución de datos automatizado de los datos a través del clúster (es decir HDFS), etc.

Cuestiones relacionadas