是否有可能使用Scala的并行集合来并行化Iterator
而不是事先完全评估它?Scala中的并行迭代器
这里我说的是在Iterator
上并行化函数转换,即map
和flatMap
。 我认为这需要预先评估Iterator
的某些元素,然后计算更多,一旦有一些元素通过next
消耗。
我能找到的所有内容都需要将迭代器最多转换为Iterable
或Stream
。当我呼叫.par
时,Stream
会得到完全评估。
我也欢迎实施建议,如果这不是现成的。实施应支持并行map
和flatMap
。
答案是_probably no_,但是你可以多说一点你想从中得到什么吗?特别是,计算何时应该开始运行 - 在创建迭代器之后,还是一旦你调用了一些强制评估的东西? –
@RexKerr看起来像一个设计选择;但让它在第一次请求时开始,使第一个请求变得特别。我目前正试图实现这样的事情,并且我选择立即开始运行并存储下一个“n”结果。一旦消耗完了,我计算一个替代品。 – ziggystar