ホームページ >バックエンド開発 >Golang >実行中の Go プログラムで使用されるプロセッサの数を正確に判断するにはどうすればよいですか?

実行中の Go プログラムで使用されるプロセッサの数を正確に判断するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-29 19:41:11548ブラウズ

How Can I Accurately Determine the Number of Processors Used by a Running Go Program?

実行中の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。