Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menentukan Bilangan Pemproses yang Digunakan oleh Program Running Go dengan Tepat?

Bagaimanakah Saya Boleh Menentukan Bilangan Pemproses yang Digunakan oleh Program Running Go dengan Tepat?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 19:41:11612semak imbas

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

Mengesahkan Bilangan Pemproses untuk Program Running Go

Di Golang, fungsi runtime.GOMAXPROCS membolehkan anda menetapkan bilangan maksimum pemproses teras yang tersedia untuk program ini. Walau bagaimanapun, ia mungkin tidak selalu mencerminkan bilangan sebenar pemproses yang digunakan. Artikel ini menerangkan cara untuk mengesahkan bilangan pemproses yang digunakan secara aktif oleh program Go.

Coretan kod yang disediakan, diambil daripada perbincangan tentang masa jalan.Gosched, menunjukkan program Go yang ringkas dengan satu goroutine dan nilai yang berbeza-beza untuk 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()
}

Untuk mengesahkan bilangan pemproses yang sedang digunakan oleh program, kaedah yang dicadangkan ialah menggunakan fungsi runtime.NumCPU. Fungsi ini mengembalikan jumlah bilangan CPU logik yang tersedia pada sistem, walaupun untuk mesin dengan hyperthreading.

Formula untuk menentukan keselarian maksimum adalah seperti berikut:

func MaxParallelism() int {
    maxProcs := runtime.GOMAXPROCS(0)
    numCPU := runtime.NumCPU()
    if maxProcs < numCPU {
        return maxProcs
    }
    return numCPU
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Bilangan Pemproses yang Digunakan oleh Program Running Go dengan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn