Pregunta

¿Sería posible crear un clúster de Python, escribiendo un servidor telnet, luego enviando por telnet los comandos y generando una salida de un lado a otro? ¿Alguien ha tenido una mejor idea para un grupo de cómputo de Python? PD. Preferiblemente para Python 3.x, si alguien sabe cómo hacerlo.

¿Fue útil?

Solución

La wiki de Python contiene una lista muy completa de bibliotecas y herramientas de computación en clúster de Python . Es posible que esté especialmente interesado en Python paralelo .

Editar: Hay una nueva biblioteca que es IMHO especialmente buena para agrupar: execnet . Es pequeño y sencillo. Y parece tener menos errores que, digamos, el módulo estándar multiprocessing .

Otros consejos

Puede ver la mayoría de los paquetes de terceros disponibles para Python 3 enumerados en aquí ; relevante para el cálculo del clúster es mpi4py : la mayoría de las demás herramientas informáticas distribuidas, como pyro, son aún así, solo Python-2, pero MPI es un estándar líder para la computación distribuida en clúster y está bien investigado (no tengo experiencia directa en el uso de mpi4py con Python 3, sin embargo, pero de oídas creo que es una buena implementación).

La alternativa principal es el propio multiprocessing , que también se amplía bastante bien si no tiene interés en interconectar nodos existentes que respeten los estándares MPI pero que no estén codificados en Python.

No hay un valor agregado real en rodar el suyo (como dice Atwood, ¡no reinvente la rueda, a menos que su propósito sea simplemente entender mejor las ruedas!) Utilice una de las soluciones sólidas, probadas y generalizadas. ya probado, depurado y optimizado en su nombre! -)

Mira en estos

http://www.parallelpython.com/

http://pyro.sourceforge.net/

He usado ambos y ambos son excelentes para la computación distribuida
para una lista más detallada de opciones ver http://wiki.python.org/moin/ParallelProcessing

y si desea ejecutar algo automáticamente en una máquina remota, la mejor alternativa a telnet es ssh que en http: // pydsh .sourceforge.net /

¿Qué tipo de cosas quieres hacer? Es posible que desee revisar hadoop . El backend, el trabajo pesado se realiza en java, pero tiene una interfaz de python, por lo que puede escribir scripts de python crear y enviar la entrada, así como procesar los resultados.

Si necesita escribir scripts administrativos, eche un vistazo a la ClusterShell biblioteca de Python también, y / y su shell paralelo clush . También es útil cuando se trata de conjuntos de nodos ( man nodeset ).

Creo que IPython.parallel es el camino a seguir. Lo he estado usando mucho durante el último año y medio. Le permite trabajar interactivamente con tantos nodos de trabajo como desee. Si está en AWS, StarCluster es una excelente manera de poner en funcionamiento IPython.parallel de forma rápida y sencilla con tantos nodos EC2 como puedas permitirte. (También puede instalar automáticamente Hadoop, y una variedad de otras herramientas útiles, si es necesario). Hay algunos trucos para usarlo. (Por ejemplo, no desea enviar grandes cantidades de datos a través de la propia interfaz IPython.parallel. Es mejor distribuir un script que elimine fragmentos de datos en cada motor individualmente). Pero, en general, lo he encontrado para sea ??una manera muy fácil de hacer el procesamiento distribuido ( ¡CAMINO mejor que Hadoop!)

" ¿Sería posible hacer un clúster de python "

Sí.

Me encantan las preguntas de sí / no. ¿Algo más que quieras saber?

(Tenga en cuenta que Python 3 tiene pocas bibliotecas de terceros todavía, por lo que es posible que desee quedarse con Python 2 en este momento).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top