zoukankan      html  css  js  c++  java
  • scala 集合自带并行机制

    Scala为了充分使用多核CPU,提供了并行集合实现(有别于前面的串行集合),用于多核环境的并行计算。par

    主要算法有:

    1. Divide and Conquer: 分治算法,Scala 通过splitters(分解器) combiners(组合器)等抽象层来实现,有点类似hadoop的MapReduce,主要思想是将计算工作分解为很多任务,分发给不同处理器处理,然后将返回结果收集。
    2. Work Stealin 算法 学数学,主要用于负责任务调度负载均衡Load-Balancing ,通俗点说就是自己完成自己任务后发现还有别人活没干完,主动或者被安排帮他人一起干,达到最快速完成任务的目的。

    案例

    import scala.collection.Parallelizable
    
    object aiguigu {
      def main(args: Array[String]): Unit = {
        (1 to 5).foreach(print) // 挨个打印数据 1 2 3 4 5
        println()
        (1 to 5).par.foreach(print)  // 会打印出随机的数字结果 比如
        println()
    
        val result1 = (0 to 100).map{case _ => Thread.currentThread().getName}.distinct
        val result2 = (0 to 100).par.map{case _ => Thread.currentThread().getName}.distinct
        println(result1)
        println("="*25)
        println(result2)
      }
    }

    结果如下: 

    12345
    42531
    Vector(main)
    =========================
    ParVector(ForkJoinPool-1-worker-5, ForkJoinPool-1-worker-1, ForkJoinPool-1-worker-3, ForkJoinPool-1-worker-7)
    关注公众号 海量干货等你
  • 相关阅读:
    C 语言的读取文件
    [Water]序号呼唤
    [Water]Hdu 1022 Train Problem I
    [Water]Hdu 2054 A == B ?
    Java竞赛可能会用到的东西
    [Huffman]Hdu 2527 Safe Or Unsafe
    [Prim]Poj 1258 Agri-Net
    Hdu 1257 最少拦截系统 (LIS、贪心)
    [Max Sum]hdu 1003
    Hdu 2566 统计硬币
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734167.html
Copyright © 2011-2022 走看看