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)
    关注公众号 海量干货等你
  • 相关阅读:
    python-MongoDB 非关系型数据库
    python-爬虫-Beautifulsoup模块
    python-flask-路由匹配源码分析
    python-flask-配置文件的源码分析
    python-爬虫-selenium模块
    python-flask-请求源码流程
    python-爬虫
    iOS开发——创建你自己的Framework
    手把手教你封装下载管理器
    AFNetwork 作用和用法详解
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734167.html
Copyright © 2011-2022 走看看