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
Lepaskan: 2024-11-29 19:41:11
asal
605 orang telah melayarinya

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()
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan