驗證正在執行的Go 程式的處理器數量
在Golang 中,runtime.GOMAXPROCS 函數可讓您設定最大處理器數量程式可用的核心。但是,它可能並不總是反映實際使用的處理器數量。本文介紹如何驗證 Go 程式主動使用的處理器數量。
提供的程式碼片段摘自有關runtime.Gosched 的討論,演示了一個簡單的Go 程序,其中包含單個goroutine 和不同的值runtime.GOMAXPROCS.
package main import ( "fmt" "runtime" "sync" ) var wg sync.WaitGroup func doTasks() { fmt.Println(" Doing task ") for ji := 1; ji < 100000000; ji++ { for io := 1; io < 10; io++ { //Some computations } } runtime.Gosched() wg.Done() } func main() { wg.Add(1) runtime.GOMAXPROCS(1) // or 2 or 4 go doTasks() doTasks() wg.Wait() }
要驗證程序正在使用的處理器數量,建議的方法是使用runtime.NumCPU 函數。此函數傳回系統上可用邏輯 CPU 的總數,即使對於具有超線程的電腦也是如此。
決定最大值並行度的公式如下:
func MaxParallelism() int { maxProcs := runtime.GOMAXPROCS(0) numCPU := runtime.NumCPU() if maxProcs < numCPU { return maxProcs } return numCPU }
以上是如何準確判斷Go程式運行時所使用的處理器數量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!