【发布时间】:2011-08-26 18:37:00
【问题描述】:
我有一个Seq 的项目,我需要对每个项目做一些事情,然后执行不需要任何输入的最后一步。我想使用 par 来加快速度:将Seq 拆分为多个分区,并在每个分区内对每个项目执行某些操作并为每个分区执行最后一步。我希望在处理特定分区的线程中运行最后一步。有没有办法做到这一点? aggregate() 似乎做得不对。
这里有一些示例代码:
// non-parallel case
val mySeq = Seq[Item]
mySeq foreach { actOnItem(_) }
doFinalStep()
// ideal par case
val mySeq = Seq[Item]
mySeq.par foreachThenDoFinalStepAfterPartition { actOnItem(_), doFinalStep }
【问题讨论】:
-
你能再描述一下吗?为什么每一批元素都处理完之后,还要做一些特别的事情?
-
@amir 该链接与我的用例无关。
-
@axel22 处理每个元素都会累积一些数据。我想在最后对这些数据做点什么。我可以轻松地移动它,以便它累积返回值,但我只想为每个分区处理一次累积。
-
这听起来接近于 aggregate() 的作用......聚合的哪一部分没有达到你想要的效果?
标签: scala