最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于python3的ThreadPoolExecutor線程池大小設(shè)置

 更新時間:2023年04月19日 10:32:56   作者:whatday  
這篇文章主要介紹了關(guān)于python3的ThreadPoolExecutor線程池大小設(shè)置,線程池的理想大小取決于被提交任務(wù)的類型以及所部署系統(tǒng)的特性,需要的朋友可以參考下

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

線程池應(yīng)該避免設(shè)置的過大或過小,如果線程池過大,大量的線程將在相對很少的CPU和內(nèi)存資源上發(fā)生競爭,這不僅會導(dǎo)致更高的內(nèi)存使用量,而且還可能耗盡資源。如果線程池過小,那么將導(dǎo)致許多空閑處理器無法執(zhí)行任務(wù),降低了系統(tǒng)吞吐率。

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

任務(wù)的性質(zhì):CPU密集型任務(wù)、IO密集型任務(wù)、混合型任務(wù)。
任務(wù)的優(yōu)先級:高、中、低。
任務(wù)的執(zhí)行時間:長、中、短。
任務(wù)的依賴性:是否依賴其他系統(tǒng)資源,如數(shù)據(jù)庫連接等。

性質(zhì)不同的任務(wù)可以交給不同規(guī)模的線程池執(zhí)行。

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

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

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

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

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

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

這個公式進(jìn)一步轉(zhuǎn)化為:

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

可以得出一個結(jié)論:

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

并發(fā)編程網(wǎng)上的一個問題

高并發(fā)、任務(wù)執(zhí)行時間短的業(yè)務(wù)怎樣使用線程池?并發(fā)不高、任務(wù)執(zhí)行時間長的業(yè)務(wù)怎樣使用線程池?并發(fā)高、業(yè)務(wù)執(zhí)行時間長的業(yè)務(wù)怎樣使用線程池?

  1. 高并發(fā)、任務(wù)執(zhí)行時間短的業(yè)務(wù),線程池線程數(shù)可以設(shè)置為CPU核數(shù)+1,減少線程上下文的切換
  2. 并發(fā)不高、任務(wù)執(zhí)行時間長的業(yè)務(wù)要區(qū)分開看:
    1. 假如是業(yè)務(wù)時間長集中在IO操作上,也就是IO密集型的任務(wù),因為IO操作并不占用CPU,所以不要讓所有的CPU閑下來,可以適當(dāng)加大線程池中的線程數(shù)目,讓CPU處理更多的業(yè)務(wù)   
    2. 假如是業(yè)務(wù)時間長集中在計算操作上,也就是計算密集型任務(wù),這個就沒辦法了,和(1)一樣吧,線程池中的線程數(shù)設(shè)置得少一些,減少線程上下文的切換   
  3. 并發(fā)高、業(yè)務(wù)執(zhí)行時間長,解決這種類型任務(wù)的關(guān)鍵不在于線程池而在于整體架構(gòu)的設(shè)計,看看這些業(yè)務(wù)里面某些數(shù)據(jù)是否能做緩存是第一步,增加服務(wù)器是第二步,至于線程池的設(shè)置,設(shè)置參考(2)。最后,業(yè)務(wù)執(zhí)行時間長的問題,也可能需要分析一下,看看能不能使用中間件對任務(wù)進(jìn)行拆分和解耦

到此這篇關(guān)于關(guān)于python3的ThreadPoolExecutor線程池大小設(shè)置的文章就介紹到這了,更多相關(guān)ThreadPoolExecutor線程池大小設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)用戶管理系統(tǒng)

    python實現(xiàn)用戶管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)用戶管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 詳解django中使用定時任務(wù)的方法

    詳解django中使用定時任務(wù)的方法

    在本篇文章中我們給大家介紹了關(guān)于django中使用定時任務(wù)的方法的相關(guān)知識點,有需要的朋友們參考下。
    2018-09-09
  • 在Python中將元組轉(zhuǎn)換為列表的方法詳解

    在Python中將元組轉(zhuǎn)換為列表的方法詳解

    這兩種Python 數(shù)據(jù)類型看起來很相似,但在上下文中卻有不同的用法,元組和列表之間的主要區(qū)別在于它們的可變性,僅當(dāng)您需要修改元素時才會將元組轉(zhuǎn)換為列表,本文現(xiàn)在我們將深入研究將元組轉(zhuǎn)換為列表的不同方法,需要的朋友可以參考下
    2023-09-09
  • python的dataframe轉(zhuǎn)換為多維矩陣的方法

    python的dataframe轉(zhuǎn)換為多維矩陣的方法

    下面小編就為大家分享一篇python的dataframe轉(zhuǎn)換為多維矩陣的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python使用pymeter操作JMeter的教程詳解

    Python使用pymeter操作JMeter的教程詳解

    pymeter?是一個?Python?庫,它可以以編程方式創(chuàng)建和運行?JMeter?測試計劃,下面就跟隨小編一起來看看Python如何使用pymeter操作JMeter的吧
    2024-01-01
  • Python OpenCV實現(xiàn)傳統(tǒng)圖片格式與base64轉(zhuǎn)換

    Python OpenCV實現(xiàn)傳統(tǒng)圖片格式與base64轉(zhuǎn)換

    Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,本文主要介紹了Python OpenCV實現(xiàn)傳統(tǒng)圖片格式與base64轉(zhuǎn)換,感興趣的可以參考一下
    2021-06-06
  • python實現(xiàn)健康碼查驗系統(tǒng)

    python實現(xiàn)健康碼查驗系統(tǒng)

    這篇文章主要介紹了?python實現(xiàn)健康碼查驗系統(tǒng),主要用到的是python用了opencv庫和pyzbar庫,文中給大家提供一段代碼判斷是否綠碼,需要的朋友可以參考下
    2022-04-04
  • python入門游戲之井字棋實例代碼

    python入門游戲之井字棋實例代碼

    python井字棋游戲雖然看上去非常簡陋,但是卻非常值得學(xué)習(xí),下面這篇文章主要給大家介紹了關(guān)于python入門游戲之井字棋的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • 用Python實現(xiàn)給Word文檔蓋章

    用Python實現(xiàn)給Word文檔蓋章

    大家好,本篇文章主要講的是用Python實現(xiàn)給Word文檔蓋章,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • python數(shù)據(jù)持久存儲 pickle模塊的基本使用方法解析

    python數(shù)據(jù)持久存儲 pickle模塊的基本使用方法解析

    這篇文章主要介紹了python數(shù)據(jù)持久存儲 pickle模塊的基本使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08

最新評論

道真| 隆化县| 遵化市| 横峰县| 德保县| 南通市| 威远县| 贵定县| 永川市| 观塘区| 舟山市| 顺昌县| 西林县| 体育| 诸暨市| 长汀县| 达拉特旗| 海阳市| 乐清市| 浑源县| 彝良县| 杂多县| SHOW| 新巴尔虎右旗| 盐边县| 芜湖市| 乾安县| 岢岚县| 德阳市| 兴和县| 防城港市| 大渡口区| 于都县| 光泽县| 喀什市| 钦州市| 象州县| 卫辉市| 龙江县| 怀化市| 蓬莱市|