0

~10K 要素の配列があり、配列のすべての要素を処理する必要があるとします。K要素のみが並列処理されるように処理したいと思います。

私は使用しますScala 2.9。並列コレクションを試しましたが (以下を参照)、複数K要素が並列処理されていることがわかりました。

import collection.parallel.ForkJoinTasks.defaultForkJoinPool._
古い値 = getParallelism
setParallelism(K)
val result = myArray.par.map(...) // 配列を並列処理する
setParallelism(旧)

要素Scala 2.9のみが並列処理されるような方法で配列を処理する方法を提案しますか?K

4

1 に答える 1

1

このsetParallelismメソッドは、並列コレクションの fork/join プールが使用することになっている並列ワーカーの推奨数を設定します。これらのKワーカーは、コレクションのどの部分でも作業できます。ワーカーが割り当てられる要素を決定するのは、スケジューラ次第です。

K並列操作に最初の要素のみを含めたい場合は、takeメソッドを使用し、その後にmap:

myArray.par.take(K).map(...)

view.take(K).map(...).forceまたは、マッピングを行う前に並列ビューを作成するために使用することもできます。

于 2013-06-26T14:36:37.300 に答える