<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                scala為了充分使用多核cpu,提供了并行集合(有別于前面的串行集合),用于多核環境的并行計算 主要用到的算法有: Divide and conquer: 分治算法,scala通過splitters,combiners等抽象層來實現,主要原理是將計算工作分解很多任務,分發給一些處理器去完成,并將他們處理結果合并返回 Work stealin: 算法,主要用于任務調度負載均衡(load-balancing),通俗點說,就是完成自己的所有任務之后,發現其他人還有活沒干完,主動(或被安排)幫他人一起干,這樣達到盡早干完的目的 ~~~ scala> val x = List(1, 2, 3, 4, 5, 6) x: List[Int] = List(1, 2, 3, 4, 5, 6) //轉換為并行化集合 scala> x.par res3: scala.collection.parallel.immutable.ParSeq[Int] = ParVector(1, 2, 3, 4, 5, 6) scala> x.par.sum res4: Int = 21 ~~~ 注意fold ~~~ val arr = Array(1, 2, 3, 4, 5, 6) println(arr.par.sum) //21 println(arr.par.fold(10)(_+_)) //81 ~~~ 因為fold的初始值在每個線程中都有 如果想避免這個,就用有特定順序的 ~~~ println(arr.par.foldLeft(10)(_+_)) //31 ~~~ 提示: foldLeft和foldRight有一種縮寫方法對應分別是`:/`和`:\` ~~~ val list4 = List(1, 9, 2, 8) # 0是初始值 # 相當于 val i6 = (0 /: list4)( (res, next) => res - next) val i6 = (0 /: list4)(_ - _) println(i6) ~~~ ~~~ val sentence = "落花人獨立,微雨燕雙飛" # 字符串也是字符的集合 # 取出一個字到剩余集合里面找 val i7 = (Map[Char, Int]() /: sentence)((m, c) => m + (c -> (m.getOrElse(c, 0) + 1))) println(i7) ~~~ **記錄中間值** ~~~ val i8= (1 to 10).scanLeft(0)(_ + _) println(i8) ~~~ 查看處理的線程 ~~~ val result1 = (0 to 1000).map{case _ => Thread.currentThread.getName}.distinct val result2 = (0 to 1000).par.map{case _ => Thread.currentThread.getName}.distinct println(result1) println(result2) ~~~ 輸出 ~~~ Vector(main) ParVector(scala-execution-context-global-11, scala-execution-context-global-17, scala-execution-context-global-15, scala-execution-context-global-13, scala-execution-context-global-16, scala-execution-context-global-12, scala-execution-context-global-14, scala-execution-context-global-18) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看