<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 進程池Pool 當需要創建的子進程數量不多時,可以直接利用multiprocessing中的Process動態成生多個進程,但如果是上百甚至上千個目標,手動的去創建進程的工作量巨大,此時就可以用到multiprocessing模塊提供的Pool方法。 初始化Pool時,可以指定一個最大進程數,當有新的請求提交到Pool中時,如果池還沒有滿,那么就會創建一個新的進程用來執行該請求;但如果池中的進程數已經達到指定的最大值,那么該請求就會等待,直到池中有進程結束,才會創建新的進程來執行,請看下面的實例: ~~~ from multiprocessing import Pool import os,time,random def worker(msg): t_start = time.time() print("%s開始執行,進程號為%d"%(msg,os.getpid())) #random.random()隨機生成0~1之間的浮點數 time.sleep(random.random()*2) t_stop = time.time() print(msg,"執行完畢,耗時%0.2f"%(t_stop-t_start)) po=Pool(3) #定義一個進程池,最大進程數3 for i in range(0,10): #Pool.apply_async(要調用的目標,(傳遞給目標的參數元祖,)) #每次循環將會用空閑出來的子進程去調用目標 po.apply_async(worker,(i,)) print("----start----") po.close() #關閉進程池,關閉后po不再接收新的請求 po.join() #等待po中所有子進程執行完成,必須放在close語句之后 print("-----end-----") ~~~ 運行結果: ~~~ ----start---- 0開始執行,進程號為21466 1開始執行,進程號為21468 2開始執行,進程號為21467 0 執行完畢,耗時1.01 3開始執行,進程號為21466 2 執行完畢,耗時1.24 4開始執行,進程號為21467 3 執行完畢,耗時0.56 5開始執行,進程號為21466 1 執行完畢,耗時1.68 6開始執行,進程號為21468 4 執行完畢,耗時0.67 7開始執行,進程號為21467 5 執行完畢,耗時0.83 8開始執行,進程號為21466 6 執行完畢,耗時0.75 9開始執行,進程號為21468 7 執行完畢,耗時1.03 8 執行完畢,耗時1.05 9 執行完畢,耗時1.69 -----end----- ~~~ multiprocessing.Pool常用函數解析: * apply_async(func[, args[, kwds]]) :使用非阻塞方式調用func(并行執行,堵塞方式必須等待上一個進程退出才能執行下一個進程),args為傳遞給func的參數列表,kwds為傳遞給func的關鍵字參數列表; * apply(func[, args[, kwds]]):使用阻塞方式調用func * close():關閉Pool,使其不再接受新的任務; * terminate():不管任務是否完成,立即終止; * join():主進程阻塞,等待子進程的退出, 必須在close或terminate之后使用; ### apply堵塞式 ~~~ from multiprocessing import Pool import os,time,random def worker(msg): t_start = time.time() print("%s開始執行,進程號為%d"%(msg,os.getpid())) #random.random()隨機生成0~1之間的浮點數 time.sleep(random.random()*2) t_stop = time.time() print(msg,"執行完畢,耗時%0.2f"%(t_stop-t_start)) po=Pool(3) #定義一個進程池,最大進程數3 for i in range(0,10): po.apply(worker,(i,)) print("----start----") po.close() #關閉進程池,關閉后po不再接收新的請求 po.join() #等待po中所有子進程執行完成,必須放在close語句之后 print("-----end-----") ~~~ 運行結果: ~~~ 0開始執行,進程號為21532 0 執行完畢,耗時1.91 1開始執行,進程號為21534 1 執行完畢,耗時1.72 2開始執行,進程號為21533 2 執行完畢,耗時0.50 3開始執行,進程號為21532 3 執行完畢,耗時1.27 4開始執行,進程號為21534 4 執行完畢,耗時1.05 5開始執行,進程號為21533 5 執行完畢,耗時1.60 6開始執行,進程號為21532 6 執行完畢,耗時0.25 7開始執行,進程號為21534 7 執行完畢,耗時0.63 8開始執行,進程號為21533 8 執行完畢,耗時1.21 9開始執行,進程號為21532 9 執行完畢,耗時0.60 ----start---- -----end----- ~~~
                  <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>

                              哎呀哎呀视频在线观看