18

Scala は、標準言語の一部として並列マップ操作を実行する方法を提供していますか?

たとえば、次のようになります。

scala> val a = List((1,2), (3,4), (3,6))
a: List[(Int, Int)] = List((1,2), (3,4), (3,6))

できます:

scala> a.map(tup => tup._1 + tup._2)
res0: List[Int] = List(3, 7, 9)

ただし、私の知る限り、これは提供された関数をリスト オブジェクトに順次マップします。関数を個別のスレッド (または同等のもの) の各要素に適用し、結果を結果リストにまとめる組み込みの方法はありますか?

4

2 に答える 2

35

追加parすると、並列コレクションが取得され、それに対する操作が並列で処理されます。通常のコレクションに戻すには、 を呼び出しますtoList

したがって、コードは次のようになります。

a.par.map(tup => tup._1 + tup._2).toList

または、.seqシーケンシャル コレクション (パラレル コレクションの反対) を取得します。

a.par.map(tup => tup._1 + tup._2).seq

また、ドキュメントを確認してください。

于 2013-11-20T10:10:45.583 に答える
8

par複数のスレッドで処理するためにリストを分割します。tasksupport結果のメンバーを変更することで、スレッド化の方法を調整できますParSeq

于 2013-11-20T10:08:50.090 に答える