2017-04-19 2 views
2

Der Fortschrittsbalken funktioniert wunderbar, wenn mit dem multiprocessing Backend verwendet wird, scheint aber überhaupt nicht zu arbeiten, wenn Sie einen distributed Scheduler als Back-End verwenden.Dask ProgressBar funktioniert nicht mit verteilt Backend

Gibt es einen Weg um dies? Oder eine andere Lösung? Das distributed Paket hat einige Fortschrittsbalken selbst, aber sie alle erfordern eine Liste von Futures zu arbeiten.

Antwort

1

Der Hauptunterschied besteht darin, dass die Ergebnisse bei Multi Threading/Verarbeitung an den Steuerungsthread zurückgegeben werden. Bei verteilten werden sie jedoch asynchron auf dem Cluster berechnet (selbst wenn dies auf Ihrem lokalen Computer geschieht). Wenn Sie zuvor hatten Code wie

with ProgressBar(): 
    out = collection.compute() 

Jetzt können Sie

from dask.distributed import progress 
out = c.compute(collection) # c is the client 
progress(out) 

tun und Ihr Ergebnis zu sammeln: out.result() oder c.gather(out)

Beachten Sie, dass die verteilten Scheduler auch ein grafisches Dashboard zur Verfügung stellt, um http://yourhost:8787, siehe zB unter Status /. Dort können Sie sehen, dass Ihre Aufgaben ausgeführt werden, ohne dass Sie einen Fortschrittsbalken aufrufen müssen.

Verwandte Themen