Python-Multiprocessing für jeden Schlüssel im Wörterbuch

Ich bin neu in Python und ich versuche, meine Verarbeitung parallel zu skalieren. Ich habe eine Datei mit einer bestimmten Anzahl von Tupeln, jeweils mit einem bestimmten Wert in der letzten Spalte. Ich möchte diese Dateidaten aufteilen und meine Funktion parallel zu jedem Stück anwenden. Aber das Ding ist, die Daten in Chunks auf der Grundlage des letzten Spaltenwerts aufzuteilen und die Funktion für jedes Chunk anzuwenden. Zum Beispiel kann die letzte Spalte 'a' für einige Tupel und 'b' für einige und 'c' für einige haben. Also in diesem Fall sollte ich drei Chunks bekommen und es parallel verarbeiten. Die Anzahl der eindeutigen Werte in der letzten Spalte kann sich je nach Dataset ändern, also muss ich die CPU entsprechend verwenden.

Q1: Was ich bis jetzt versucht habe, die Datei zu lesen und ein Wörterbuch zu erstellen, das auf diesen Aufzeichnungen basiert, also grundsätzlich drei Schlüsselwertpaare für das obige, eins mit 'a' als Schlüssel und alle Datensätze mit 'a' als Werte und Das gleiche zu 'b' und 'c'. Ich kann von Chunksize in Multiprocessing Gebrauch machen, aber hier ist es nicht Größe, seine basiert auf Schlüssel, also wie kann ich das erreichen?

Q2: Nach der Verarbeitung der oben genannten Chunks, brauche ich die Ausgabe von allen zusammen, Ordnung spielt keine Rolle und dann muss ich die ganze Ausgabe für die weitere Verarbeitung verwenden, wie kann ich mein Hauptprogramm warten, bis alle diese Prozess abgeschlossen?

Lassen Sie mich wissen, ob weitere Eingabe erforderlich ist. Vielen Dank.

One Solution collect form web for “Python-Multiprocessing für jeden Schlüssel im Wörterbuch”

Angenommen, wie Sie beschrieben haben, haben Sie drei Sätze als Werte auf Wörterbuch d und möchten die Funktion f zu jedem von ihnen separat anwenden:

 from multiprocessing import Pool p = Pool() #number of processes = number of CPUs keys, values= zip(*d.iteritems()) #ordered keys and values processed_values= p.map( f, values ) #apply the function f to each set and wait for result #then proceed to join the three sets 
  • Pythons Multiprocessing: Beschleunigung einer For-Loop für mehrere Sätze von Parametern, "apply" vs. "apply_async"
  • Python laufende Abdeckung auf nie endenden Prozess
  • Skript mit Multiprocessing-Modul wird nicht beendet
  • Warum werden in Python keine Fehler beim Multiprocessing gemeldet und wie man Fehler melden kann?
  • Python multiprocessing.Process: Start mit lokaler Variable
  • Python multiprocessing schlaf zwischen executionen
  • Python multiprocessing, Manager initiiert Prozess Spawn Loop
  • Wie kann ich eine Aufgabe in einem Multiprocessing abbrechen. Pool nach einem Timeout?
  • Mehrere Tensorströmungssitzungen gleichzeitig durchführen
  • Python: Probleme beim Zugriff auf Variablen beim Multiprocessing
  • Einfache Multitasking
  • Python ist die beste Programmiersprache der Welt.