Я действительно не думаю, что эти 2 примитива действительно соответствуют тому, что, кажется, они должны подразумевать в контексте «распределенной очереди задач». Я понимаю причину, по которой кому-то могут понадобиться функции карты и звездной карты, поскольку они создают одну задачу, но на самом деле я не получаю от них преимущества, поскольку для пользователя было бы тривиально написать функцию, просто поддерживающую список входных данных. . Для меня термин «карта» здесь подразумевает что-то вроде алгоритма уменьшения карты, что определенно не так. Аккорд — это, по сути, форма сокращения карты, которая на самом деле просто сбивает с толку.
Я думаю, что название аккорда должно остаться, поскольку этого достаточно, но наличие карты и звездной карты намекает на то, что есть функция уменьшения карты IMO.
http://docs.python.org/2/library/multiprocessing.html#using -a-pool-of-workers
group
— функция распределенной карты.
Термин карта использовался задолго до того, как Google написал документ MapReduce, и я не думаю, что кого-то смущает этот термин, когда он используется в haskell или clojure. Функциональность прекрасно выражается термином «карта», и я не думаю, что есть какие-то естественные альтернативы.
Примитивы холста также все существительные (подпись, группа, аккорд, цепочка), но карта используется как глагол (task.map), а не то, с чем иногда видят туристов.
Фреймворки MapReduce также обычно не имеют отключенных этапов отображения и сокращения, вместо этого
у вас есть операция mapreduce, которая использует Mapper и Reducer, где обработанные данные передаются в редюсер. На самом деле, простого наличия map() и reduce() недостаточно для MapReduce.
Таким образом, chord
на самом деле не форма сокращения карты, а распределенная версия барьера, и имя
берется непосредственно из такого барьера в Cω.
group
не берется ниоткуда, но операция та же самая
как то, что часто называют «параллельной картой» в литературе по параллелизму, только в распределенной форме.
Поэтому map
обычно считается последовательным, а не параллельным
И они полезны, потому что позволяют уменьшить детализацию операции, просто используя task.map(list)
вместо group(task.s(i) for i in list)
За исключением того, что task.map(list)
не позволяет выполнять задачи одновременно. Все задачи выполняются на одном и том же воркере одна за другой. Если это не так, я могу открыть новую тему.
Самый полезный комментарий
group
— функция распределенной карты.Термин карта использовался задолго до того, как Google написал документ MapReduce, и я не думаю, что кого-то смущает этот термин, когда он используется в haskell или clojure. Функциональность прекрасно выражается термином «карта», и я не думаю, что есть какие-то естественные альтернативы.
Примитивы холста также все существительные (подпись, группа, аккорд, цепочка), но карта используется как глагол (task.map), а не то, с чем иногда видят туристов.
Фреймворки MapReduce также обычно не имеют отключенных этапов отображения и сокращения, вместо этого
у вас есть операция mapreduce, которая использует Mapper и Reducer, где обработанные данные передаются в редюсер. На самом деле, простого наличия map() и reduce() недостаточно для MapReduce.
Таким образом,
chord
на самом деле не форма сокращения карты, а распределенная версия барьера, и имяберется непосредственно из такого барьера в Cω.
group
не берется ниоткуда, но операция та же самаякак то, что часто называют «параллельной картой» в литературе по параллелизму, только в распределенной форме.
Поэтому
map
обычно считается последовательным, а не параллельным