欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • Python列表的定義及使用

    Python列表的定義及使用

    這篇文章主要介紹了Python列表的定義及使用,在Python中,列表是由一系列元素按照特定的順序構(gòu)成的數(shù)據(jù)結(jié)構(gòu),也就是說(shuō)列表類(lèi)型的變量可以存儲(chǔ)多個(gè)數(shù)據(jù),且可以重復(fù),下面一起進(jìn)入文章學(xué)習(xí)學(xué)習(xí)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 淺談python浮點(diǎn)數(shù)比較的三種方法

    淺談python浮點(diǎn)數(shù)比較的三種方法

    在 Python 中,由于浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部的表示方式是二進(jìn)制的,因此進(jìn)行浮點(diǎn)數(shù)比較時(shí)可能會(huì)出現(xiàn)精度問(wèn)題,本文就介紹了三種解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • python基礎(chǔ)之裝飾器詳解

    python基礎(chǔ)之裝飾器詳解

    這篇文章主要介紹了python基礎(chǔ)之裝飾器詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • python re正則表達(dá)式模塊(Regular Expression)

    python re正則表達(dá)式模塊(Regular Expression)

    Python 的 re 模塊(Regular Expression 正則表達(dá)式)提供各種正則表達(dá)式的匹配操作,在文本解析、復(fù)雜字符串分析和信息提取時(shí)是一個(gè)非常有用的工具.
    2014-07-07
  • Opencv 圖片的OCR識(shí)別的實(shí)戰(zhàn)示例

    Opencv 圖片的OCR識(shí)別的實(shí)戰(zhàn)示例

    這篇文章主要介紹了Opencv 圖片的OCR識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • pyttsx3實(shí)現(xiàn)中文文字轉(zhuǎn)語(yǔ)音的方法

    pyttsx3實(shí)現(xiàn)中文文字轉(zhuǎn)語(yǔ)音的方法

    今天小編就為大家分享一篇pyttsx3實(shí)現(xiàn)中文文字轉(zhuǎn)語(yǔ)音的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python return語(yǔ)句如何實(shí)現(xiàn)結(jié)果返回調(diào)用

    Python return語(yǔ)句如何實(shí)現(xiàn)結(jié)果返回調(diào)用

    這篇文章主要介紹了Python return語(yǔ)句如何實(shí)現(xiàn)結(jié)果返回調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python入門(mén)教程(二十八)Python中的JSON

    Python入門(mén)教程(二十八)Python中的JSON

    這篇文章主要介紹了Python入門(mén)教程(二十八)Python中的JSON,JSON 是用 JavaScript 對(duì)象表示法(JavaScript object notation)編寫(xiě)的文本,接下來(lái)我們就來(lái)學(xué)習(xí)一下
    2023-04-04
  • 詳解python中的json和字典dict

    詳解python中的json和字典dict

    python中,json和dict非常類(lèi)似,都是key-value的形式,而且json、dict也可以非常方便的通過(guò)dumps、loads互轉(zhuǎn)。這篇文章主要介紹了python中的json、字典dict,需要的朋友可以參考下
    2018-06-06
  • python刪除本地夾里重復(fù)文件的方法

    python刪除本地夾里重復(fù)文件的方法

    這篇文章主要為大家詳細(xì)介紹了python刪除本地夾里重復(fù)文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論