首頁 >後端開發 >Golang >詳解Golang cpu的使用設定

詳解Golang cpu的使用設定

藏色散人
藏色散人轉載
2021-06-11 11:54:282676瀏覽

下面由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 {	
	
	}

}

設定CPU使用

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核心數。

2020.1.1 補充更新

最新測試結果:

測試機器: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中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除