多執行緒 程式完成指定任務,開啟多少併發執行緒最合適

2021-08-19 22:57:00 字數 364 閱讀 8837

首先要考慮執行的任務是什麼型別:

1、io密集型

2、計算密集型

io密集型:以大量任務讀寫資料庫,讀寫檔案為主,記憶體中的運算很少,執行緒基本阻塞在io上面。這種情況下,盡量多開啟一些執行緒併發做io操作,因為在io過程中,cpu幾乎是閒置的。

計算密集型:任務以記憶體中的計算為主。這時候cpu是滿負荷工作,即使開再多的執行緒,只會徒增執行緒上下午切換的成本。這種情況下,cpu是幾核,就開幾個執行緒。

執行緒數 = (io時間 + cpu工作時間) / cpu工作時間 * 核數

io密集型,相當於cpu工作時間無窮小的情況,這時候得到的執行緒數很大。

計算密集型,相當於io時間無窮小,計算得的執行緒數約等於cpu核數。

python多執行緒完成多個任務

執行緒 執行緒可以理解成執行 的分支,執行緒是執行對應的 的,cpu排程執行緒去執行對應 importtime importthreading 跳舞的任務 defdance 獲取當前執行 的執行緒 current thread threading.current thread print dance...

多執行緒 等待所有任務執行完成

在多執行緒中,有時候需要等待所有執行緒執行完成後才讓繼續往下執行,如查詢結果彙總等。下面列舉兩種等待方式 方式一 利用 countdownlatch 類完成。示例 按任務總量建立計數器 final countdownlatch countdownlatch new countdownlatch so...

springboot定時任務開啟多執行緒

在開發過程中避免不了要使用定時任務,例如 定時統計資料,上傳資料等等。而springboot的定時任務scheduled預設是單執行緒。所以當乙個類中需要執行的定時方法過多是,任務就會排隊,不按時執行!下面放上一張截圖,這個是每小時的第十分鐘執行的乙個定時任務 這是資料入庫的時間。因為定時任務太多,...