下面由golang教程栏目给大家详解golang cpu的使用设置,希望对需要的朋友有所帮助!
以下测试,使用的Go版本是1.8.3
不设置
如果没有调用runtime.GOMAXPROCS 去设置CPU,Golang默认使用所有的cpu核。
测试机器CPU有4个核,测试代码开启4个goroutine,从测试结果看4个核心全部跑满。
测试代码如下:
立即学习“go语言免费学习笔记(深入)”;
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设置并发执行时使用的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 { } }有时候,我们常用到:
方科网络ERP图文店下载方科网络ERP图文店II版为仿代码站独立研发的网络版ERP销售程序。本本版本为方科网络ERP图文店版的简化版,去除了部分不同用的功能,使得系统更加精炼实用。考虑到图文店的特殊情况,本系统并未制作出入库功能,而是将销售作为重头,使用本系统,可以有效解决大型图文店员工多,换班数量多,订单混杂不清的情况。下单、取件、结算分别记录操作人员,真正做到订单全程跟踪!无限用户级别,不同的用户级别可以设置不同的价
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/amd641.不使用GOMAXPROCS 设置CPU
8 个goroutine,可以跑满8个核, CPU使用最高达到800%2.使用GOMAXPROCS 设置CPU
8 个goroutine
- 设置只使用1个核, CPU使用最高达到100%
- 设置只使用2个核,CPU使用最高达到200%也就是说GOMAXPROCS可以用来设置程序使用的最多CPU核数。










