Golang cpu的使用设置--GOMAXPROCS

前端之家收集整理的这篇文章主要介绍了Golang cpu的使用设置--GOMAXPROCS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

以下测试,使用的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核心数。

猜你在找的Go相关文章