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核心数。
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核数。
Golang cpu的使用设置--GOMAXPROCS的更多相关文章
- linux上java和golang环境变量的设置
JAVA环境变量 (1).打开~/.bashrc完成环境配置( 作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效.) 文件追加 expo ...
- 根据CPU核数合理设置线程池大小
一般来说池中总线程数是核心池线程数量两倍,只要确保当核心池有线程停止时,核心池外能有线程进入核心池即可. 我们所需要关心的主要是核心池线程的数量该如何设置. 自定义线程池代码 package com. ...
- golang go get代理设置
1.gopm 代替go 下载第三方依赖包 可以采用gopm从golang.org一些镜像网站上下载. a). 安装gopm go get -u github.com/gpmgo/gopm 可手动下载, ...
- golang ---CPU信息
package main import ( "fmt" "github.com/StackExchange/wmi" ) type gpuInfo struct ...
- Docker 容器CPU设置
CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况.使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少.CPU使用率的高低与你的CPU强弱有直接关系. ...
- 设置NGINX进程分配至多核CPU提升性能
Nginx 配置文件 nginx.conf 首先需要找到 Nginx 的配置文件 nginx.conf 才能进行下面的操作,在LNMP一键安装包默认配置下,nginx.conf 存放在/usr/loc ...
- [转帖]centos7设置CPU的运行频率为performance
centos7设置CPU的运行频率为performance http://www.512873.com/archives/612.html Publish: March 6, 2019 Categor ...
- 【转载】 BIOS设置选项详细解释——CPU核心篇
原文地址: http://kuaibao.qq.com/s/20180226A1G1OC00?refer=spider ---------------------------------------- ...
- Golang开发者常见的坑
Golang开发者常见的坑 目录 [−] 初级 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accid ...
随机推荐
- 5-log4j2.xml配置文件各个节点详解
具体配置参考官网:http://logging.apache.org/log4j/2.x/manual/configuration.html 一.log.xml文件的大致结构 <?xml ver ...
- 在线播放Video/PDF/JPG
Label1.Text = Play(url, , ); public string Play(string url, int width, int height) { string strTmp = ...
- windows下利用nodejs压缩.min文件
利用nodejs中的npm工具,压缩文件,必须在node环境下 压缩js文件 1.在全局中安装uglify-js模块 npm install uglify-js -g 2.可以直接使用uglifyjs ...
- JAVA 线程Join
join方法: 当某个线程要等待另一个线程执行结束后才能继续执行时,使用join方法. public class DinnerThread { public static void main(Stri ...
- 【Python】socket编程-1
一.什么是socket编程:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,编程传输层,socket本质是编程接口(API) 二.网络七层协议:物里层 数据链 ...
- python 基础5 初级函数
函数最重要的目的是方便我们重复使用相同的一段程序.将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. def my_len(): def 关键字 ...
- pandas的聚合操作: groupyby与agg
pandas提供基于行和列的聚合操作,groupby可理解为是基于行的,agg则是基于列的 从实现上看,groupby返回的是一个DataFrameGroupBy结构,这个结构必须调用聚合函数(如su ...
- 2.25 js处理多窗口
2.25 js处理多窗口 前言在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解:Selenium2+python自动化13-多窗口.句柄(handle)),这样在多个窗口之间来 ...
- 【c++基础】c++提升速度的方法总结
参考 1. C++程序提高运行速度的方法; 2. 提高C++程序运行效率的10个简单方法; 3. C++编程中提高程序运行效率的方式(不断更新); 完
- [MarkDown] markdown语法小结
目录 写在前面 目录 特殊字符自动转换 段落和换行 第一阶标题 第二阶标题显示效果有下划线 H1 H2有下划线 H3 区块引用 列表 代码区块 分割线 链接 强调 删除线 代码 图片 反斜杠 表格 g ...