pr1*_*001 3 scala parallel-collections
我发现了一个类似的问题,但它有一个似乎更简单的情况,昂贵的操作始终是相同的.就我而言,我想收集一些我希望并行执行的昂贵API调用的结果.
说我有:
def apiRequest1(q: Query): Option[Result]
def apiRequest2(q: Query): Option[Result]
Run Code Online (Sandbox Code Playgroud)
哪里q是相同的值.
我想要一个List[Result]或类似的(显然List[Option[Result]]很好),我希望两个昂贵的操作并行发生.
当然,一个简单的List构造函数不会并行执行:
List(apiRequest1(q), apiRequest2(q))
Run Code Online (Sandbox Code Playgroud)
并行集合可以帮助吗?或者我应该期待未来等?我可以想到使用并行集合的唯一方法似乎很简单:
List(q, q).par.zipWithIndex.flatMap((q) =>
if (q._2 % 2 == 0) apiRequest1(q._1) else apiRequest2(q._1)
)
Run Code Online (Sandbox Code Playgroud)
实际上,所有事情都是平等的,也许这并不是那么糟糕......
Deb*_*ski 14
你为什么不写
List(apiRequest1 _, apiRequest2 _).par.map(_(q))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |