Celery: Sollen Map und Starmap umbenannt werden?

Erstellt am 24. Feb. 2014  ·  3Kommentare  ·  Quelle: celery/celery

Ich glaube nicht wirklich, dass diese 2 Primitiven wirklich dem gerecht werden, was sie im Kontext einer "verteilten Aufgabenwarteschlange" zu implizieren scheinen. Ich verstehe den Grund, warum jemand die Karten- und Sternenkartenfunktionen haben möchte, da sie eine einzelne Aufgabe erstellen, aber ich bekomme nicht wirklich den Vorteil für sie, da es für den Benutzer trivial wäre, die Funktion so zu schreiben, dass sie einfach eine Liste von Eingaben unterstützt . Für mich impliziert der Begriff "Map" hier so etwas wie einen Map-Reduce-Algorithmus, was dies definitiv nicht ist. Ein Akkord ist praktisch eine Form von Map-Reduce, was die Namensgebung wirklich nur verwirrend macht.

Ich denke, die Benennung von Akkorden sollte bestehen bleiben, da sie seitdem ausreicht, aber Karte und Sternenkarte zu haben, deutet darauf hin, dass es meiner Meinung nach eine Funktion zum Reduzieren von Karten gibt.

http://docs.python.org/2/library/multiprocessing.html#using -a-pool-of-workers

Hilfreichster Kommentar

group ist die verteilte Kartenfunktion.

Der Begriff Karte wurde verwendet, lange bevor Google das MapReduce-Papier schrieb, und ich glaube nicht, dass irgendjemand durch den Begriff verwirrt ist, wenn er in haskell oder clojure verwendet wird. Die Funktionalität wird mit dem Begriff „Karte“ perfekt ausgedrückt, und ich glaube nicht, dass es natürliche Alternativen gibt.

Die Grundelemente der Leinwand sind auch alle Substantive (Signatur, Gruppe, Akkord, Kette), aber Karte wird als Verb verwendet (task.map), nicht das, was Touristen manchmal sehen.

MapReduce-Frameworks haben normalerweise auch keine getrennten Maps und reduzieren stattdessen Stufen
Sie haben eine mapreduce-Operation, die einen Mapper und einen Reducer verwendet, wobei die verarbeiteten Daten in den Reducer gestreamt werden. Tatsächlich wird es für MapReduce nicht als ausreichend angesehen, einfach nur map() und Reduce() zu haben.

Ein chord ist also nicht wirklich eine Form von Map-Reduce, es ist eine verteilte Version einer Barriere, und der Name
wird direkt von einer solchen Barriere in Cω genommen.

group wird nicht irgendwoher genommen, aber die Operation ist die gleiche
als das, was in der Concurrency-Literatur oft 'Parallel Map' genannt wird, nur in verteilter Form.
Daher wird map normalerweise als sequentiell und nicht als parallel angesehen

Alle 3 Kommentare

group ist die verteilte Kartenfunktion.

Der Begriff Karte wurde verwendet, lange bevor Google das MapReduce-Papier schrieb, und ich glaube nicht, dass irgendjemand durch den Begriff verwirrt ist, wenn er in haskell oder clojure verwendet wird. Die Funktionalität wird mit dem Begriff „Karte“ perfekt ausgedrückt, und ich glaube nicht, dass es natürliche Alternativen gibt.

Die Grundelemente der Leinwand sind auch alle Substantive (Signatur, Gruppe, Akkord, Kette), aber Karte wird als Verb verwendet (task.map), nicht das, was Touristen manchmal sehen.

MapReduce-Frameworks haben normalerweise auch keine getrennten Maps und reduzieren stattdessen Stufen
Sie haben eine mapreduce-Operation, die einen Mapper und einen Reducer verwendet, wobei die verarbeiteten Daten in den Reducer gestreamt werden. Tatsächlich wird es für MapReduce nicht als ausreichend angesehen, einfach nur map() und Reduce() zu haben.

Ein chord ist also nicht wirklich eine Form von Map-Reduce, es ist eine verteilte Version einer Barriere, und der Name
wird direkt von einer solchen Barriere in Cω genommen.

group wird nicht irgendwoher genommen, aber die Operation ist die gleiche
als das, was in der Concurrency-Literatur oft 'Parallel Map' genannt wird, nur in verteilter Form.
Daher wird map normalerweise als sequentiell und nicht als parallel angesehen

Und sie sind nützlich, weil sie es Ihnen ermöglichen, die Granularität einer Operation zu verringern, indem Sie einfach task.map(list) anstelle von group(task.s(i) for i in list) verwenden

Abgesehen davon, dass task.map(list) die Aufgaben nicht gleichzeitig ausführen lässt. Alle Aufgaben werden nacheinander auf demselben Worker ausgeführt. Sollte dies nicht der Fall sein, kann ich ein neues Thema eröffnen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen