以下测试,使用的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核数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!