Das Python-Wiki enthält eine sehr umfangreiche Liste von Python-Cluster-Computing-Bibliotheken und -Tools . Sie könnten besonders an Parallel Python interessiert sein.
Bearbeiten: Es gibt eine neue Bibliothek, die IMHO besonders gut im Clustering ist: execnet . Es ist klein und einfach. Und es scheint weniger Bugs zu haben als beispielsweise das Standard-Modul multiprocessing
.
Sie können die meisten Pakete von Drittanbietern, die für Python 3 verfügbar sind, hier anzeigen ; relevant für die Clusterberechnung ist mpi4py - die meisten anderen verteilten Computerwerkzeuge wie Pyro sind nur noch Python-2 , aber MPI ist ein führender Standard für die verteilte Berechnung von Clustern und sieht gut darin aus (Ich habe noch keine direkten Erfahrungen mit mpi4py mit Python 3, aber vom Hörensagen glaube ich, dass es eine gute Implementierung ist).
Die Hauptalternative ist Pythons eigene integrierte Mehrfachbearbeitung , die ebenfalls verfügbar ist skaliert ziemlich gut, wenn Sie kein Interesse daran haben, vorhandene Knoten zu verbinden, die die MPI-Standards respektieren, aber in Python möglicherweise nicht codiert sind.
Es gibt keinen echten Mehrwert beim Rollen Ihrer eigenen (wie Atwood sagt, erfinden Sie das Rad nicht neu, es sei denn, Ihr Zweck ist einfach Räder besser zu verstehen!) - Verwenden Sie eine der soliden, getesteten, weit verbreiteten Lösungen, bereits getestet, debugged und optimiert für Sie! -)
Wenn Sie Verwaltungsskripts schreiben müssen, sehen Sie sich auch die ClusterShell Python-Bibliothek oder / und ihre parallele Shell an überblenden . Dies ist auch nützlich, wenn Sie mit Knotensätzen arbeiten ( man nodeset ).
Ich denke IPython.parallel ist der richtige Weg. Ich benutze es seit den letzten anderthalb Jahren ausgiebig. Sie können interaktiv mit beliebig vielen Worker-Nodes arbeiten. Wenn Sie sich auf AWS befinden, ist StarCluster eine großartige Möglichkeit, IPython.parallel schnell und einfach mit so vielen EC2-Knoten zu starten wie du dir leisten kannst. (Es kann auch automatisch Hadoop und eine Vielzahl anderer nützlicher Tools installieren, falls erforderlich.) Es gibt einige Tricks, um es zu benutzen. (Sie möchten beispielsweise keine großen Datenmengen über die IPython.parallel-Schnittstelle selbst senden. Lieber ein Skript verteilen, das Datenblöcke für jede einzelne Engine einzeln abruft.) Aber insgesamt habe ich es gefunden ist eine bemerkenswert einfache Möglichkeit, verteilte Verarbeitung zu machen ( WAY besser als Hadoop!)
"Wäre es möglich, einen Python-Cluster zu erstellen"
Ja.
Ich liebe ja / nein Fragen. Möchten Sie noch etwas wissen?
(Beachten Sie, dass es in Python 3 noch wenige Bibliotheken von Drittanbietern gibt, also möchten Sie vielleicht im Moment bei Python 2 bleiben.)
Tags und Links python python-3.x parallel-processing cluster-computing