并行处理 – Golang:如何验证运行Go程序的处理器数量
发布时间:2020-12-16 19:22:46 所属栏目:大数据 来源:网络整理
导读:我是Google Go(Golang)的新手.我的问题与这篇文章 What exactly does runtime.Gosched do?有关.代码结构如下所示.我的问题是,当我更改GOMAXPROCS中的处理器数量时,如何验证它运行的处理器数量.当我做’顶’时,它显示a.out过程,即使GOMAXPROCS超过1,也会消耗1
我是Google Go(Golang)的新手.我的问题与这篇文章
What exactly does runtime.Gosched do?有关.代码结构如下所示.我的问题是,当我更改GOMAXPROCS中的处理器数量时,如何验证它运行的处理器数量.当我做’顶’时,它显示a.out过程,即使GOMAXPROCS超过1,也会消耗100%或更少的资源.我将非常感谢你的帮助.
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() }
在给定时间进程可以运行的最大逻辑CPU数量不超过
runtime.GOMAXPROCS(0) 和
runtime.NumCPU() 的最小值.
func MaxParallelism() int { maxProcs := runtime.GOMAXPROCS(0) numCPU := runtime.NumCPU() if maxProcs < numCPU { return maxProcs } return numCPU } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |