これらの2つのプリミティブは、「分散タスクキュー」のコンテキストで意味するように見えるものに実際に対応しているとは思いません。 単一のタスクを作成するため、誰かがマップ関数とスターマップ関数を必要とする理由は理解していますが、ユーザーが入力のリストをサポートするだけの関数を作成するのは簡単なので、実際には利点がありません。 。 私にとって、ここでの「マップ」という用語は、map-reduceアルゴリズムのようなものを意味しますが、これは間違いなくそうではありません。 コードは事実上map-reduceの形式であり、実際には名前が途方に暮れるだけです。
それ以来、コードの名前は十分に固執する必要があると思いますが、mapとstarmapがあることは、map-reduce関数IMOがあることをほのめかしています。
http://docs.python.org/2/library/multiprocessing.html#using -a-pool-of-workers
group
は分散マップ関数です。
マップという用語は、GoogleがMapReduceの論文を書くずっと前から使用されていました。ハスケルやクロージャーで使用されたときに、この用語に混乱する人はいないと思います。 機能は「マップ」という用語で完全に表現されており、自然な代替手段はないと思います。
キャンバスプリミティブもすべて名詞(署名、グループ、コード、チェーン)ですが、マップは動詞(task.map)として使用され、観光客が時々目にするものではありません。
MapReduceフレームワークは、通常、マップとリデュースのステージが切断されていないため、代わりに
MapperとReducerを使用するmapreduce操作があり、処理されたデータがレデューサーにストリーミングされます。 実際、map()とreduce()を持っているだけでは、MapReduceには十分であるとは見なされません。
したがって、 chord
は実際にはmap-reduceの形式ではなく、バリアの分散バージョンであり、名前は
Cωのそのような障壁から直接取られます。
group
はどこからも取得されませんが、操作は同じです
並行性の文献では、分散形式で「並列マップ」と呼ばれることがよくあります。
したがって、 map
は通常、並列ではなく順次であると見なされます
また、 group(task.s(i) for i in list)
task.map(list)
を使用するだけで、操作の粒度を下げることができるので便利です。
task.map(list)
がタスクの同時実行を許可しないことを除いて。 すべてのタスクは同じワーカーで次々に実行されます。 そうでない場合は、新しい問題を開くことができます。
最も参考になるコメント
group
は分散マップ関数です。マップという用語は、GoogleがMapReduceの論文を書くずっと前から使用されていました。ハスケルやクロージャーで使用されたときに、この用語に混乱する人はいないと思います。 機能は「マップ」という用語で完全に表現されており、自然な代替手段はないと思います。
キャンバスプリミティブもすべて名詞(署名、グループ、コード、チェーン)ですが、マップは動詞(task.map)として使用され、観光客が時々目にするものではありません。
MapReduceフレームワークは、通常、マップとリデュースのステージが切断されていないため、代わりに
MapperとReducerを使用するmapreduce操作があり、処理されたデータがレデューサーにストリーミングされます。 実際、map()とreduce()を持っているだけでは、MapReduceには十分であるとは見なされません。
したがって、
chord
は実際にはmap-reduceの形式ではなく、バリアの分散バージョンであり、名前はCωのそのような障壁から直接取られます。
group
はどこからも取得されませんが、操作は同じです並行性の文献では、分散形式で「並列マップ」と呼ばれることがよくあります。
したがって、
map
は通常、並列ではなく順次であると見なされます