下面由golang教學欄位給大家詳解Golang cpu的使用設置,希望對需要的朋友有所幫助!
以下測試,使用的Go版本是1.8.3
如果沒有呼叫runtime.GOMAXPROCS 去設定CPU,Golang預設使用所有的cpu核。
測試機器CPU有4個核,測試程式碼開啟4個goroutine,從測試結果看4個核心全部跑滿。
測試程式碼如下:
package main func main() { go task() go task() go task() go task() select{} } func task(){ for { } }
func GOMAXPROCS(n int) int
GOPROCS sets the maximum number of CPUs that can be executing simultaneously and returns the previous setting. If n < 1, it does not change the current setting.
#設定並發執行時使用的CPU的數目
例如,設定只使用1個核心
runtime.GOMAXPROCS(1)
設定只使用2個核心
runtime.GOMAXPROCS(2)
測試程式碼如下,只設定一個核心:
package main import ( "runtime" ) func main() { runtime.GOMAXPROCS(1) go task() go task() go task() go task() select{} } func task(){ for { } }
有時候,我們常用到:
runtime.GOMAXPROCS( runtime.NumCPU())
func NumCPU() int NumCPU returns the number of logical CPUs usable by the current process.
函數傳回目前進程可用的邏輯CPU數目
目前測試下來,使用這個設定CPU,效果和不呼叫GOMAXPROCS效果一樣,就是使用所有的CPU核心數。
最新測試結果:
測試機器:MAC CPU 8核心
版本:go version go1.13 darwin/amd64
1.不使用GOMAXPROCS 設定CPU
8 個goroutine,可以跑滿8個核, CPU使用最高達到800%
2.使用GOMAXPROCS 設定CPU
8 個goroutine
- 設定只使用1個核, CPU使用最高達到100%
- 設定只使用2個核,CPU使用最高達到200%
也就是說GOMAXPROCS可以用來設定程式使用的最多CPU核數。
以上是詳解Golang cpu的使用設定的詳細內容。更多資訊請關注PHP中文網其他相關文章!