Überprüfen der Anzahl von Prozessoren für ein laufendes Go-Programm
In Golang können Sie mit der runtime.GOMAXPROCS-Funktion die maximale Anzahl von Prozessoren festlegen Kerne, die dem Programm zur Verfügung stehen. Allerdings spiegelt es möglicherweise nicht immer die tatsächliche Anzahl der genutzten Prozessoren wider. In diesem Artikel wird erläutert, wie Sie die Anzahl der Prozessoren überprüfen, die von einem Go-Programm aktiv genutzt werden.
Der bereitgestellte Codeausschnitt aus der Diskussion über runtime.Gosched zeigt ein einfaches Go-Programm mit einer einzigen Goroutine und unterschiedlichen Werten für 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() }
Um die Anzahl der Prozessoren zu überprüfen, die das Programm verwendet, wird als Methode die Verwendung der runtime.NumCPU-Funktion empfohlen. Diese Funktion gibt die Gesamtzahl der verfügbaren logischen CPUs im System zurück, auch für Maschinen mit Hyperthreading.
Die Formel zur Bestimmung der maximalen Parallelität lautet wie folgt:
func MaxParallelism() int { maxProcs := runtime.GOMAXPROCS(0) numCPU := runtime.NumCPU() if maxProcs < numCPU { return maxProcs } return numCPU }
Das obige ist der detaillierte Inhalt vonWie kann ich die Anzahl der von einem laufenden Go-Programm verwendeten Prozessoren genau bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!