• 技术文章 >后端开发 >Golang

    详解Golang cpu的使用设置

    藏色散人藏色散人2021-06-11 11:54:28转载105
    下面由golang教程栏目给大家详解Golang cpu的使用设置,希望对需要的朋友有所帮助!

    以下测试,使用的Go版本是1.8.3

    不设置

    如果没有调用runtime.GOMAXPROCS 去设置CPU,Golang默认使用所有的cpu核。

    测试机器CPU有4个核,测试代码开启4个goroutine,从测试结果看4个核心全部跑满。

    测试代码如下:

    package main
    
    func main()  {
    	go task()
    	go task()
    	go task()
    	go task()
    
    	select{}
    
    }
    
    
    func task(){
    
    	for {	
    	
    	}
    
    }

    设置CPU使用

    func GOMAXPROCS(n int) int

    GOMAXPROCS sets the maximum number of CPUs that can be executing simultaneously and returns the previous setting. If n < 1, it does not change the current setting.

    设置并发执行时使用的CPU的数目

    例如,设置只使用1个核心

    runtime.GOMAXPROCS(1)

    设置只使用2个核心

    runtime.GOMAXPROCS(2)

    测试代码如下,只设置一个核心:

    package main
    
    import (
    	"runtime"
    )
    
    func main()  {
        runtime.GOMAXPROCS(1)
    	go task()
    	go task()
    	go task()
    	go task()
    
    	select{}
    }
    
    
    func task(){
    	for {	
    	
    	}
    }

    有时候,我们常用到:

    runtime.GOMAXPROCS(runtime.NumCPU())

    func NumCPU() int
    NumCPU returns the number of logical CPUs usable by the current process.

    函数返回当前进程可用的逻辑CPU数目

    目前测试下来,使用这个设置CPU,效果和不调用GOMAXPROCS效果一样,就是使用所有的CPU核心数。

    2020.1.1 补充更新

    最新测试结果:

    测试机器:MAC CPU 8核
    版本:go version go1.13 darwin/amd64

    1.不使用GOMAXPROCS 设置CPU
    8 个goroutine,可以跑满8个核, CPU使用最高达到800%

    2.使用GOMAXPROCS 设置CPU
    8 个goroutine
    - 设置只使用1个核, CPU使用最高达到100%
    - 设置只使用2个核,CPU使用最高达到200%

    也就是说GOMAXPROCS可以用来设置程序使用的最多CPU核数。

    以上就是详解Golang cpu的使用设置的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:cnblogs,如有侵犯,请联系admin@php.cn删除
    专题推荐:Golang
    上一篇:go语言中的rune怎么获取字符长度 下一篇:分享一个Go json 踩坑记录
    第16期线上培训班

    相关文章推荐

    • Golang如何创建守护进程以及平滑重启• 详解golang ssh连接服务器(模拟交互terminal)• goLang进行调试操作方法• 了解学习golang类型断言• Golang如何连接Ldap

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网