0

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

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

导入 collection.parallel.ForkJoinTasks.defaultForkJoinPool._
val old = getParallelism
设置并行度(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 回答