Python Multiprocessing, Verteilte Cluster

Ich bin auf der Suche nach einem python-Paket, das tun können, multiprocessing, nicht nur zwischen verschiedenen Kernen in einem einzigen computer, sondern auch mit einem cluster, verteilt auf mehrere Maschinen. Es gibt eine Menge von verschiedenen Pakete für python, für distributed computing, aber die meisten scheinen zu erfordern eine änderung im code ausführen (zum Beispiel ein Präfix, der angibt, dass das Objekt auf einer remote-Maschine). Insbesondere möchte ich etwas so nah wie möglich an die multiprocessing pool.map Funktion. So, zum Beispiel, wenn auf einer einzigen Maschine ist das Skript:

from multiprocessing import Pool
pool = Pool(processes = 8)
resultlist = pool.map(function, arglist)

Dann der pseudocode für eine verteilte cluster wäre:

from distprocess import Connect, Pool, Cluster

pool1 = Pool(processes = 8)
c = Connect(ipaddress)
pool2 = c.Pool(processes = 4)
cluster = Cluster([pool1, pool2])
resultlist = cluster.map(function, arglist)
  • Wahrscheinlich erfordert mehr setup als du suchst, aber man kann einen Blick auf Sellerie für eine verteilte Warteschlange Aufgabe. docs.celeryproject.org/en/latest/getting-started/...
  • Ich würde check out Krug
  • Ich kann am Ende mit Sellerie, aber es erfordert eine ganze Menge, und die Hilfe-Dateien sind schwer zu Folgen (disjunkt, anstatt klare Anweisungen Schritt für Schritt mit einer Kopie des gesamten Skript am Ende). Kanne docs reden parallelisieren, aber nicht die Parallelisierung auf verschiedenen Computern.
  • Es gibt auch eine Recht umfassende Liste von Lösungen: wiki.python.org/moin/ParallelProcessing
  • Erwähnenswert ist auch, dass es eine neuere Lösung, die ähnlich ist pathos -- ein Paket namens dask.
InformationsquelleAutor Michael | 2014-11-12
Schreibe einen Kommentar