开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:go 设置运行 cpu 数目】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9750
go 设置运行 cpu 数目
一,设置 Golang 运行的 cpu 数
介绍:为了充分了利用多 cpu 的优势,在 Golang 程序中,设置运行的 cpu 数目。package main
import” fmt"
import ”runtime”
Func main() {
//获取当前系統 cpu 的数量num := runt ime,NumCPU()
//我这里设置 num-1的 cpu 运行 go 程序
runt ime.GOMAXPROCS (num)
fmt.Println("num=", num)
}
go1.8后,默认让程序运行在多个核上,可以不用设置。
go1.8前, 要设置一下,可以更高效的利益 cpu。
import "runtime"
runtime 包提供和 go 运行时环境的互操作,如控制 go 程的图数。它包括用于 refec 包的低层次类型信息;参见 reflect 报的文档获取运行时类型系统的可编程接口。
func NumCPU
func NumCPU() int
NumCPU 返回本地机器的逻辑 CPU 个数。func GOMAXPROCS
func GOHAXPROCS(Cn int) int
GOMXPROCS 设 E 可同时执行的最大 CPL 数,并返回先前的设置。若 n<1就不会更改当前设置,本地机器的逻辑 CPU 数可通过 NumCPU 壹询。本因数在调度程序优化后会去掉。func SetCPUProfileRate
func SetCPUProfileRate(hz int)
SetCPuUrtleRale 设置 CPU pole 记录的速率为平均每秒几 z 次。如果 hz<=0 , SelCPUProleRale 会关团 poie 记录如果记录器在执行,该速率必须在关闭之后才能修改。
绝大多数使用者应使用 runtimeppror 包或 esting 包的-testcpupronle 选项非直接yoSetCPUProfleRale.func CPUProfile
func CPUProfle() []byte
CPUProfile 返回二进制 CPU profle 堆栈跟踪数据的下一个 chunk,函数会阻塞直到该数据可用。如果 profle 的记录被关闭,且在记录器开着的时候积累的 profle 数据都被返回,CPUProfle 会返回 nil.调用者在再次调用本图数之前应先保存返回的数据。
绝大多数使用者应使用 runtime/pprof 包或 testing 包的-estcpuprofle 选项而非直接使用 CPUProtle。