Verfolgen des Fortschritts der Joblib.Parallel-Ausführung

8

Gibt es eine einfache Möglichkeit, den Gesamtfortschritt einer Joblib.Parallel -Ausführung zu verfolgen?

Ich habe eine lange Ausführung von Tausenden von Jobs, die ich in einer Datenbank verfolgen und aufzeichnen möchte. Zu diesem Zweck muss ich jedoch, wenn Parallel eine Aufgabe beendet, einen Callback ausführen, der angibt, wie viele verbleibende Jobs übrig sind.

Ich habe eine ähnliche Aufgabe bereits mit Pythons stdlib multiprocessing.Pool erledigt, indem ich einen Thread gestartet habe, der die Anzahl der ausstehenden Jobs in der Jobliste von Pool aufzeichnet.

Wenn ich den Code betrachte, erbt Parallel Pool, also dachte ich, ich könnte den gleichen Trick machen, aber es scheint diese Liste nicht zu benutzen, und ich konnte nicht herausfinden, wie ich sonst "lesen" könnte "Es ist interner Status auf jede andere Art.

    
Cerin 27.07.2014, 17:20
quelle

3 Antworten

7

In der Dokumentation, die Sie verlinkt haben, steht Parallel für eine optionale Fortschrittsanzeige. Es wird implementiert, indem das Schlüsselwort callback verwendet wird, das von multiprocessing.Pool.apply_async :

bereitgestellt wird %Vor%

...

%Vor%

Und hier ist print_progress :

%Vor%

Die Art, wie sie das implementieren, ist irgendwie seltsam, um ehrlich zu sein - es scheint anzunehmen, dass Aufgaben immer in der Reihenfolge ausgeführt werden, in der sie gestartet wurden. Die Variable index , die zu print_progress geht, ist nur die Variable self.n_dispatched zu dem Zeitpunkt, an dem der Job tatsächlich gestartet wurde. Der erste gestartete Job wird immer mit einem index von 0 enden, auch wenn der dritte Job zum ersten Mal beendet wird. Es bedeutet auch, dass sie die Anzahl der abgeschlossenen Jobs nicht im Auge behalten. Es gibt also keine Instanzvariable, die Sie überwachen können.

Ich denke, dein bestes ist es, deine eigene CallBack-Klasse und Affen-Patch Parallel zu machen:

%Vor%

Ausgabe:

%Vor%

Auf diese Weise wird Ihr Callback immer dann aufgerufen, wenn ein Job abgeschlossen wird, als der Standardjob.

    
dano 27.07.2014 18:24
quelle
2

Erweitern Sie danos Antwort auf die neueste Version der Joblib-Bibliothek. Es gab einige Änderungen an der internen Implementierung.

%Vor%     
Connor Clark 23.01.2017 20:28
quelle
1

Hier ist eine weitere Antwort auf Ihre Frage mit der folgenden Syntax:

%Vor%

Ссылка

    
Ben Usman 04.11.2016 05:35
quelle