2016-04-21 4 views
2

Ich habe dieses Problem, dass keine dict Literal in Ipyparallel map beteiligt ist, fehlt und wird {} im Ergebnis der Ausgabe.IPython-Parallel: Dict-Literal fehlt in der parallelen Karte

Dieses Problem hat keinen Einfluss auf Diktatelemente, die über die Methode update und dict-Konstruktoren hinzugefügt wurden.

Um das Problem zu reproduzieren, können Sie einen Cluster mit einem direct view aufgerufen, sagen dview. Der folgende Code wurde in IPython mit Python 3.4 (sowohl Client als auch Engine) getestet.

dview.map(lambda x: {'label': x*2}, range(4)} 

Es wird [{}, {}, {}, {}] zurückkehren, wenn Sie die Taste label erwarten im dict erscheinen.

Das gleiche Problem tritt auch in den folgenden Situationen:

  • Normale Funktionsdeklaration
  • Dict wörtlichen als ein Zwischenwert (auch als Argument für update) verwendet
+0

realisiert Nur: Dies ist nur reproduzierbar mit einem Remote-Cluster. Spun up "ipcluster" auf dem lokalen Rechner, es funktioniert gut. Selbst wenn ich "ipython" und dann "rc = Client()" auf dem Computer ausführe, der den Controller hostet, wird der obige Code korrekt ausgeführt. – streamliner18

Antwort

0

Nicht sicher Wenn das für Ihr Python 3.4 Problem gilt, aber wenn ich Ihren Code auf Python 2.7.9 ausführen, generiert die map Methode ein asynchrones Objekt und kein Wörterbuch. Um ein Wörterbuch mit der Methode map zu erhalten, muss ich das Listenverständnis verwenden, um das asynchrone Objekt zu durchlaufen. Die map_sync Methode funktioniert jedoch gut.

Hier ist ein Code-Schnipsel, wenn Sie es auf Ihrem Remote-Cluster versuchen möchten (entsprechende JSON-Datei einfügen):

from IPython.parallel import Client 

c = Client() 
dview = c[:] 

smap = dview.map_sync(lambda x: {'label': x*2}, range(4)) 
print(smap) #gives dict 

amap = dview.map(lambda x: {'label': x*2}, range(4)) 
print(amap) #produces async obj 

amap_dict = [r for i,r in enumerate(amap)] 
print(amap_dict) #gives dict 

Weitere Informationen über Asynchron-Objekte hier: https://ipython.org/ipython-doc/2/parallel/asyncresult.html#map-results-are-iterable

Verwandte Themen