Eu realmente não acho que esses 2 primitivos realmente correspondem ao que parece que eles deveriam implicar no contexto de uma "fila de tarefas distribuídas". Eu entendo o motivo pelo qual alguém pode querer as funções map e starmap, pois elas criam uma única tarefa, mas eu realmente não tenho vantagem para eles, pois seria trivial para o usuário escrever a função para simplesmente suportar uma lista de entradas . Para mim, o termo "mapa" aqui implica algo como um algoritmo de redução de mapa que definitivamente não é. Um acorde é efetivamente uma forma de redução de mapa que realmente torna a nomenclatura incompreensível.
Eu acho que a nomenclatura do acorde deve ficar, pois faz o suficiente, mas ter mapa e mapa estelar alude que existe uma função de redução de mapa IMO.
http://docs.python.org/2/library/multiprocessing.html#using -a-pool-of-workers
group
é a função de mapa distribuído.
O termo mapa foi usado muito antes do Google escrever o artigo MapReduce, e acho que ninguém está confuso com o termo quando usado em haskell ou clojure. A funcionalidade é perfeitamente expressa com o termo 'mapa', e não acho que existam alternativas naturais.
Os primitivos canvas também são todos substantivos (assinatura, grupo, acorde, cadeia), mas map é usado como um verbo (task.map), não a coisa com a qual os turistas às vezes são vistos.
As estruturas MapReduce também normalmente não terão estágios de mapa e redução desconectados, em vez disso
você tem uma operação mapreduce que usa um Mapper e um Redutor, onde os dados processados são transmitidos para o redutor. Na verdade, simplesmente ter map() e reduce() não é considerado suficiente para MapReduce.
Portanto, um chord
não é realmente uma forma de redução de mapa, é uma versão distribuída de uma barreira, e o nome
é diretamente retirado de tal barreira em Cω.
group
não é retirado de lugar nenhum, mas a operação é a mesma
como o que é freqüentemente chamado de 'mapa paralelo' na literatura de simultaneidade, apenas na forma distribuída.
Portanto, map
geralmente é considerado sequencial, não paralelo
E eles são úteis porque permitem diminuir a granularidade de uma operação simplesmente usando task.map(list)
em vez de group(task.s(i) for i in list)
Exceto que task.map(list)
não permite que as tarefas sejam executadas simultaneamente. Todas as tarefas são executadas no mesmo trabalhador, uma após a outra. Se não for esse o caso, posso abrir um novo problema.
Comentários muito úteis
group
é a função de mapa distribuído.O termo mapa foi usado muito antes do Google escrever o artigo MapReduce, e acho que ninguém está confuso com o termo quando usado em haskell ou clojure. A funcionalidade é perfeitamente expressa com o termo 'mapa', e não acho que existam alternativas naturais.
Os primitivos canvas também são todos substantivos (assinatura, grupo, acorde, cadeia), mas map é usado como um verbo (task.map), não a coisa com a qual os turistas às vezes são vistos.
As estruturas MapReduce também normalmente não terão estágios de mapa e redução desconectados, em vez disso
você tem uma operação mapreduce que usa um Mapper e um Redutor, onde os dados processados são transmitidos para o redutor. Na verdade, simplesmente ter map() e reduce() não é considerado suficiente para MapReduce.
Portanto, um
chord
não é realmente uma forma de redução de mapa, é uma versão distribuída de uma barreira, e o nomeé diretamente retirado de tal barreira em Cω.
group
não é retirado de lugar nenhum, mas a operação é a mesmacomo o que é freqüentemente chamado de 'mapa paralelo' na literatura de simultaneidade, apenas na forma distribuída.
Portanto,
map
geralmente é considerado sequencial, não paralelo