pydata blaze: erlaubt es Parallelverarbeitung oder nicht?

8

Ich versuche, numpige oder Pandas Operationen parallel zu machen. Dafür habe ich pydatas Blaze untersucht. Mein Verständnis war, dass eine nahtlose Parallelisierung das wichtigste Verkaufsargument war.

Leider konnte ich keine Operation finden, die auf mehr als einem Kern läuft. Ist die Parallelverarbeitung noch in vollem Gange oder aktuell nur ein erklärtes Ziel? Mache ich etwas falsch? Ich benutze Blaze v0.6.5.

Beispiel für eine Funktion, die ich parallelisieren wollte: (Deduplizierung einer Pytables-Spalte, die zu groß ist, um in den Speicher zu passen)

%Vor%

Bearbeiten 1

Ich hatte Probleme, Phillips Beispielen zu folgen:

%Vor%

Meine Umgebung:

%Vor%

Aber Achtung, Blaze scheint eine falsche Version zu melden:

%Vor%

Mit anderen Datenquellen scheint Blaze zu funktionieren:

%Vor%     
ARF 16.12.2014, 13:27
quelle

1 Antwort

8

Hinweis: Das folgende Beispiel benötigt die neueste Version von blaze , die Sie über

erhalten können %Vor%

Sie benötigen auch die neueste Version des im Entstehen begriffenen into Projekts. Sie müssen into von master installieren, was Sie mit

tun können %Vor%

Sie können keine "nahtlose" Parallelisierung mit einem beliebigen Backend durchführen, sondern das bcolz Backend unterstützt die Parallelisierung auf eine nette Art und Weise. Hier ist ein Beispiel mit dem NYC Taxitrip / Tarifdatensatz

Hinweis: Ich habe die Reise- und Tarifdatensätze in einem einzigen Datensatz zusammengefasst. Es gibt 173.179.759 Zeilen im Datensatz

%Vor%

Um prozessbasierte Parallelität hinzuzufügen, fügen wir die Pool -Klasse aus dem multiprocessing stdlib-Modul ein und übergeben die Methode Pool instance map als Keyword-Argument an compute :

%Vor%

Also, ungefähr eine dreifache Beschleunigung für eine zusätzliche Codezeile. Beachten Sie, dass dies eine String-Spalte ist und diese im Vergleich zu anderen Typen sehr ineffizient sind. Ein über eine Integer-Spalte berechneter distinct -Ausdruck ist in etwa 1 Sekunde (gegenüber 3 Sekunden) mit mehreren Kernen beendet (also etwa die gleiche Verbesserung der Laufzeit):

%Vor%     
Phillip Cloud 16.12.2014, 14:36
quelle