中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3的ThreadPoolExecutor線程池大小怎么設置

發布時間:2023-04-19 15:45:50 來源:億速云 閱讀:100 作者:iii 欄目:開發技術

今天小編給大家分享一下python3的ThreadPoolExecutor線程池大小怎么設置的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

線程池的理想大小取決于被提交任務的類型以及所部署系統的特性。

線程池應該避免設置的過大或過小,如果線程池過大,大量的線程將在相對很少的CPU和內存資源上發生競爭,這不僅會導致更高的內存使用量,而且還可能耗盡資源。如果線程池過小,那么將導致許多空閑處理器無法執行任務,降低了系統吞吐率。

要想合理的配置線程池的大小,首先得分析任務的特性,可以從以下幾個角度分析:

任務的性質:CPU密集型任務、IO密集型任務、混合型任務。
任務的優先級:高、中、低。
任務的執行時間:長、中、短。
任務的依賴性:是否依賴其他系統資源,如數據庫連接等。

性質不同的任務可以交給不同規模的線程池執行。

對于不同性質的任務來說,CPU密集型任務應配置盡可能小的線程,如配置CPU個數+1的線程數,IO密集型任務應配置盡可能多的線程,因為IO操作不占用CPU,不要讓CPU閑下來,應加大線程數量,如配置兩倍CPU個數+1,而對于混合型的任務,如果可以拆分,拆分成IO密集型和CPU密集型分別處理,前提是兩者運行的時間是差不多的,如果處理時間相差很大,則沒必要拆分了。

若任務對其他系統資源有依賴,如某個任務依賴數據庫的連接返回的結果,這時候等待的時間越長,則CPU空閑的時間越長,那么線程數量應設置得越大,才能更好的利用CPU。

當然具體合理線程池值大小,需要結合系統實際情況,在大量的嘗試下比較才能得出,以上只是前人總結的規律。

在這篇如何合理地估算線程池大小?有一個估算合理值的公式

最佳線程數目 = ((線程等待時間+線程CPU時間)/線程CPU時間 )* CPU數目

比如平均每個線程CPU運行時間為0.5s,而線程等待時間(非CPU運行時間,比如IO)為1.5s,CPU核心數為8,那么根據上面這個公式估算得到:((0.5+1.5)/0.5)*8=32。

這個公式進一步轉化為:

最佳線程數目 = (線程等待時間與線程CPU時間之比 + 1)* CPU數目

可以得出一個結論:

線程等待時間所占比例越高,需要越多線程。線程CPU時間所占比例越高,需要越少線程。 以上公式與之前的CPU和IO密集型任務設置線程數基本吻合。

并發編程網上的一個問題

高并發、任務執行時間短的業務怎樣使用線程池?并發不高、任務執行時間長的業務怎樣使用線程池?并發高、業務執行時間長的業務怎樣使用線程池?

  1. 高并發、任務執行時間短的業務,線程池線程數可以設置為CPU核數+1,減少線程上下文的切換

  2. 并發不高、任務執行時間長的業務要區分開看:

    1. 假如是業務時間長集中在IO操作上,也就是IO密集型的任務,因為IO操作并不占用CPU,所以不要讓所有的CPU閑下來,可以適當加大線程池中的線程數目,讓CPU處理更多的業務   

    2. 假如是業務時間長集中在計算操作上,也就是計算密集型任務,這個就沒辦法了,和(1)一樣吧,線程池中的線程數設置得少一些,減少線程上下文的切換   

  3. 并發高、業務執行時間長,解決這種類型任務的關鍵不在于線程池而在于整體架構的設計,看看這些業務里面某些數據是否能做緩存是第一步,增加服務器是第二步,至于線程池的設置,設置參考(2)。最后,業務執行時間長的問題,也可能需要分析一下,看看能不能使用中間件對任務進行拆分和解耦

以上就是“python3的ThreadPoolExecutor線程池大小怎么設置”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海盐县| 洪雅县| 鄂尔多斯市| 南开区| 壶关县| 玉田县| 迁安市| 蒙自县| 长乐市| 大石桥市| 吴旗县| 湛江市| 莎车县| 淮滨县| 乌什县| 洞头县| 台州市| 莒南县| 中江县| 商南县| 东乡| 宁城县| 通河县| 丰城市| 蒙阴县| 嘉善县| 巩义市| 吉林省| 报价| 普安县| 札达县| 邵阳县| 新邵县| 清苑县| 喀什市| 儋州市| 嵊州市| 盐池县| 绥宁县| 彰化市| 鹰潭市|