Celery: Faut-il renommer map et starmap ?

Créé le 24 févr. 2014  ·  3Commentaires  ·  Source: celery/celery

Je ne pense pas vraiment que ces 2 primitives soient vraiment à la hauteur de ce qu'elles semblent devoir impliquer dans le contexte d'une "file d'attente de tâches distribuée". Je comprends la raison pour laquelle quelqu'un pourrait vouloir les fonctions map et starmap puisqu'elles créent une seule tâche, mais je n'en tire pas vraiment l'avantage car il serait trivial pour l'utilisateur d'écrire la fonction pour simplement prendre en charge une liste d'entrées . Pour moi, le terme "carte" implique ici quelque chose comme un algorithme de réduction de carte, ce qui n'est certainement pas le cas. Un accord est en fait une forme de réduction de carte qui rend vraiment la dénomination ahurissante.

Je pense que la dénomination de l'accord devrait rester car elle en fait assez depuis, mais avoir une carte et une carte des étoiles fait allusion au fait qu'il existe une fonction de réduction de carte IMO.

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

Commentaire le plus utile

group est la fonction de carte distribuée.

Le terme carte a été utilisé bien avant que Google n'écrive l'article MapReduce, et je ne pense pas que quiconque soit confus par le terme lorsqu'il est utilisé dans haskell ou clojure. La fonctionnalité est parfaitement exprimée avec le terme "carte", et je ne pense pas qu'il existe d'alternatives naturelles.

Les primitives de toile sont également toutes des noms (signature, groupe, accord, chaîne), mais la carte est utilisée comme un verbe (task.map), pas la chose avec laquelle les touristes sont parfois vus.

Les frameworks MapReduce n'auront pas non plus normalement des étapes de carte et de réduction déconnectées, à la place
vous avez une opération mapreduce qui prend un mappeur et un réducteur, où les données traitées sont diffusées dans le réducteur. En fait, avoir simplement map() et reduce() n'est pas considéré comme suffisant pour MapReduce.

Ainsi, un chord n'est pas vraiment une forme de réduction de carte, c'est une version distribuée d'une barrière, et le nom
est directement tirée d'une telle barrière dans Cω.

group n'est pris nulle part, mais l'opération est la même
comme ce qui est souvent appelé «carte parallèle» dans la littérature sur la concurrence, uniquement sous forme distribuée.
Par conséquent, map est généralement considéré comme séquentiel et non parallèle

Tous les 3 commentaires

group est la fonction de carte distribuée.

Le terme carte a été utilisé bien avant que Google n'écrive l'article MapReduce, et je ne pense pas que quiconque soit confus par le terme lorsqu'il est utilisé dans haskell ou clojure. La fonctionnalité est parfaitement exprimée avec le terme "carte", et je ne pense pas qu'il existe d'alternatives naturelles.

Les primitives de toile sont également toutes des noms (signature, groupe, accord, chaîne), mais la carte est utilisée comme un verbe (task.map), pas la chose avec laquelle les touristes sont parfois vus.

Les frameworks MapReduce n'auront pas non plus normalement des étapes de carte et de réduction déconnectées, à la place
vous avez une opération mapreduce qui prend un mappeur et un réducteur, où les données traitées sont diffusées dans le réducteur. En fait, avoir simplement map() et reduce() n'est pas considéré comme suffisant pour MapReduce.

Ainsi, un chord n'est pas vraiment une forme de réduction de carte, c'est une version distribuée d'une barrière, et le nom
est directement tirée d'une telle barrière dans Cω.

group n'est pris nulle part, mais l'opération est la même
comme ce qui est souvent appelé «carte parallèle» dans la littérature sur la concurrence, uniquement sous forme distribuée.
Par conséquent, map est généralement considéré comme séquentiel et non parallèle

Et ils sont utiles car ils vous permettent de réduire la granularité d'une opération simplement en utilisant task.map(list) au lieu de group(task.s(i) for i in list)

Sauf que task.map(list) n'autorise pas l'exécution simultanée des tâches. Toutes les tâches s'exécutent sur le même travailleur les unes après les autres. Si ce n'est pas le cas, je peux ouvrir un nouveau sujet.

Cette page vous a été utile?
0 / 5 - 0 notes