scala中是否存在快速并发语法糖的实现?例如.的map-reduce
发布时间:2020-12-16 18:23:28 所属栏目:安全 来源:网络整理
导读:与演员传递信息非常棒.但我希望代码更简单. 示例(伪代码) val splicedList:List[List[Int]]=biglist.partition(100)val sum:Int=ActorPool.numberOfActors(5).getAllResults(splicedList,foldLeft(_+_)) spliceIntoParts将一个大列表转换为100个小列表 numbe
与演员传递信息非常棒.但我希望代码更简单.
示例(伪代码) val splicedList:List[List[Int]]=biglist.partition(100) val sum:Int=ActorPool.numberOfActors(5).getAllResults(splicedList,foldLeft(_+_)) spliceIntoParts将一个大列表转换为100个小列表 解决方法
与使用期货创建演员相比,您可以减少开销:
import scala.actors.Futures._ val nums = (1 to 1000).grouped(100).toList val parts = nums.map(n => future { n.reduceLeft(_ + _) }) val whole = (0 /: parts)(_ + _()) 您必须处理分解问题并编写“future”块并将其重新组合成最终答案,但它确实使得并行执行一堆小代码块变得容易. (请注意,左侧的_()是未来的应用函数,这意味着“给我你并行计算的答案!”,它会阻塞,直到答案可用.) 并行集合库会自动分解问题并为您重新组合答案(与Clojure中的pmap一样);那还不是主要API的一部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |