実行中の Go プログラムのプロセッサ数の確認
Golang では、 runtime.GOMAXPROCS 関数を使用してプロセッサの最大数を設定できます。プログラムで使用できるコア。ただし、実際に使用されているプロセッサの数を常に反映しているとは限りません。この記事では、Go プログラムによってアクティブに使用されているプロセッサの数を確認する方法について説明します。
提供されているコード スニペットは、runtime.Gosched に関する議論から抜粋したもので、単一の goroutine とさまざまな値を持つ単純な Go プログラムを示しています。 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 中国語 Web サイトの他の関連記事を参照してください。