【发布时间】:2013-06-15 05:13:53
【问题描述】:
是否有可能,使用 Scala 的并行集合来并行化 Iterator 事先完全评估它?
这里我说的是在Iterator 上并行化函数转换,即map 和flatMap。
我认为这需要提前评估Iterator 的一些元素,然后计算更多,一旦通过next 消耗了一些元素。
我能找到的所有内容都需要将迭代器最多转换为 Iterable 或 Stream。然后,当我调用 .par 时,Stream 会得到完全评估。
如果这不是现成的,我也欢迎实施建议。实现应该支持并行map 和flatMap。
【问题讨论】:
-
答案是可能没有,但你能多说一点你想从中得到什么吗?特别是,计算应该什么时候开始运行——在你创建迭代器之后,或者一旦你调用了强制评估的东西?
-
@RexKerr 似乎是一种设计选择;但是让它在第一个请求时开始会使第一个请求有点特别。我目前正在尝试实现类似的东西,我选择立即开始运行并存储下一个
n结果。一旦消耗了一个,我就会计算一个替换。
标签: scala parallel-processing scala-collections