python獲取cpu核數來確定最大線程池數量


 

 
 
ProcessPoolExecutor
 
ProcessPoolExecutor
import multiprocessing
print(multiprocessing.cpu_count())

如果是cpu密集型  i線程池數量i就是cpu邏輯核數

 如果是IO密集型, 最大線程數就是2倍的cpu邏輯核數  

線程池中的線程數有兩個概念: 一個是核心池大小,一個是最大池大小

  如果開啟的線程數量等於核心池大小了,就是進入隊列,當然隊列也有大小的,如果隊列也滿了,就會繼續開啟線程,如果開啟的線程數等於最大線程數了,那就考慮如何處理接下來的任務:是丟棄還是中止任務

    with ProcessPoolExecutor(max_workers=200) as executor:    #  這個是多進程
        executor.map(print_hello, range(num))

但是聽聞Python的多線程實際上並不能真正利用多核,所以如果使用多線程實際上還是在一個核上做並發處理。不過,如果使用多進程就可以真正利用多核,因為各進程之間是相互獨立的,不共享資源,可以在不同的核上執行不同的進程,達到並行的效果 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM