假设我有一个~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
个元素?
答案 0 :(得分:1)
setParallelism
方法设置并行集合的fork / join池应该使用的建议并行工作数。那些K
工作人员可以在集合的任何部分工作 - 由调度程序决定工作人员将被分配到哪些元素。
如果您想在并行操作中仅包含第一个K
元素,则应使用take
方法,然后使用map
:
myArray.par.take(K).map(...)
您也可以在执行映射之前使用view.take(K).map(...).force
创建并行视图。