Ich versuche, ipyparallel
als eine Alternative zu der multiprocessing
in meiner Master - Slaves - Architektur zu integrieren.Freigeben von Warteschlangen mit ipyparallel Cluster
nämlich zur Zeit alle Prozesse haben zwei Warteschlangen:
- Eine für Aufgaben vom Master zum Slave
- Einer für Ergebnisse von Sklaven zu meistern.
Momentan verwende ich multiprocessing.Manager().Queue()
Warteschlangen für die Kommunikation. Es scheint jedoch, dass sie nicht mit den ipyparallel
Prozessen geteilt werden können.
Der Grund, warum ich das überhaupt (und nicht nur über Funktionen) mache, ist, weil das "Einrichten" der Arbeiter von Grund auf fast so teuer ist (rechnerisch) wie die Berechnung. Ich würde lieber eine Funktion (über map_async
oder ähnliches) ausführen, die die Umgebung auf den Arbeitern einrichten würde, die erste Berechnung durchführen, die Ergebnisse in die Ergebniswarteschlange schieben und dann (erheblich kleinere) Aktualisierungen von der Aufgabenwarteschlange holen und wiederholen die letzten paar Schritte bis zum Anhalten (wieder über die Warteschlange).
Wenn es einen besseren Ansatz/Rahmen für diese Art von Aufgabe gibt (es muss jedoch Python sein), bin ich ganz Ohr.
Dank