【发布时间】:2013-06-26 14:25:46
【问题描述】:
假设我有一个大约 10K 元素的数组,我需要处理数组的所有元素。我想以仅并行处理 K 元素的方式处理它们。
我使用Scala 2.9。我尝试了并行集合(见下文),但我看到 更多 比并行处理的 K 元素。
您建议如何处理Scala 2.9 中的数组,以使只有K 元素被并行处理?
【问题讨论】:
标签: scala parallel-processing parallel-collections
假设我有一个大约 10K 元素的数组,我需要处理数组的所有元素。我想以仅并行处理 K 元素的方式处理它们。
我使用Scala 2.9。我尝试了并行集合(见下文),但我看到 更多 比并行处理的 K 元素。
您建议如何处理Scala 2.9 中的数组,以使只有K 元素被并行处理?
【问题讨论】:
标签: scala parallel-processing parallel-collections
setParallelism 方法设置了并行集合的 fork/join 池应该使用的并行工作者的推荐数量。那些 K 工作人员可以在集合的任何部分工作 - 由调度程序决定将工作人员分配给哪些元素。
如果您只想在并行操作中包含第一个 K 元素,您应该使用 take 方法,然后是 map:
myArray.par.take(K).map(...)
您也可以在进行映射之前使用view.take(K).map(...).force 创建并行视图。
【讨论】:
view的使用吗?
take、map 或filter 在内存中创建,直到集合为forced。由于某些抽象惩罚和间接性,这可能会或可能不会提高性能,具体取决于转换是什么。你可以在这里阅读更多信息:docs.scala-lang.org/overviews/collections/views.html