這篇文章給大家分享的是有關(guān)Golang中cpu使用設(shè)置的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比敖漢網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式敖漢網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋敖漢地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。
以下測(cè)試,使用的Go版本是1.8.3
如果沒(méi)有調(diào)用runtime.GOMAXPROCS 去設(shè)置CPU,Golang默認(rèn)使用所有的cpu核。
測(cè)試機(jī)器CPU有4個(gè)核,測(cè)試代碼開(kāi)啟4個(gè)goroutine,從測(cè)試結(jié)果看4個(gè)核心全部跑滿(mǎn)。
測(cè)試代碼如下:
package main func main() { go task() go task() go task() go task() select{} } func task(){ for { } }
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.
設(shè)置并發(fā)執(zhí)行時(shí)使用的CPU的數(shù)目
例如,設(shè)置只使用1個(gè)核心
runtime.GOMAXPROCS(1)
設(shè)置只使用2個(gè)核心
runtime.GOMAXPROCS(2)
測(cè)試代碼如下,只設(shè)置一個(gè)核心:
package main import ( "runtime" ) func main() { runtime.GOMAXPROCS(1) go task() go task() go task() go task() select{} } func task(){ for { } }
有時(shí)候,我們常用到:
runtime.GOMAXPROCS(runtime.NumCPU())
func NumCPU() int NumCPU returns the number of logical CPUs usable by the current process.
函數(shù)返回當(dāng)前進(jìn)程可用的邏輯CPU數(shù)目
目前測(cè)試下來(lái),使用這個(gè)設(shè)置CPU,效果和不調(diào)用GOMAXPROCS效果一樣,就是使用所有的CPU核心數(shù)。
最新測(cè)試結(jié)果:
測(cè)試機(jī)器:MAC CPU 8核
版本:go version go1.13 darwin/amd64
1.不使用GOMAXPROCS 設(shè)置CPU
8 個(gè)goroutine,可以跑滿(mǎn)8個(gè)核, CPU使用最高達(dá)到800%
2.使用GOMAXPROCS 設(shè)置CPU
8 個(gè)goroutine
- 設(shè)置只使用1個(gè)核, CPU使用最高達(dá)到100%
- 設(shè)置只使用2個(gè)核,CPU使用最高達(dá)到200%
也就是說(shuō)GOMAXPROCS可以用來(lái)設(shè)置程序使用的最多CPU核數(shù)。
感謝各位的閱讀!關(guān)于“Golang中cpu使用設(shè)置的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!