Scala中的并行处理2.9

时间:2013-06-26 14:25:47

标签: scala parallel-processing parallel-collections

假设我有一个~10K元素的数组,我需要处理数组的所有元素。我想以这样的方式处理它们,即只并行处理K个元素。

我使用Scala 2.9。我尝试了并行集合(见下文),但我看到更多而不是并行处理的K元素。

import collection.parallel.ForkJoinTasks.defaultForkJoinPool._
val old = getParallelism
setParallelism(K)
val result = myArray.par.map(...) // process the array in parallel
setParallelism(old)

您如何建议在Scala 2.9中处理数组,以便并行处理K个元素?

1 个答案:

答案 0 :(得分:1)

setParallelism方法设置并行集合的fork / join池应该使用的建议并行工作数。那些K工作人员可以在集合的任何部分工作 - 由调度程序决定工作人员将被分配到哪些元素。

如果您想在并行操作中仅包含第一个K元素,则应使用take方法,然后使用map

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

您也可以在执行映射之前使用view.take(K).map(...).force创建并行视图。