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

詳解Golang cpu的使用設定

藏色散人
發布: 2021-06-11 11:54:28
轉載
2685 人瀏覽過

下面由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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板