加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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个小列表
numberofactors部分创建一个池,该池使用5个actor并在作业完成后接收新作业
和getallresults使用列表上的方法.所有这些都是在后台传递的消息完成的.也许getFirstResult,计算第一个结果,并停止所有其他线程(如破解密码)

解决方法

与使用期货创建演员相比,您可以减少开销:

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的一部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读