Go语言中Goroutine的设置方式
作者:奋斗的大橙子 发布时间:2024-05-13 10:40:43
标签:Go,Golang,设置,Goroutine
一、 通过runtime包进行多核设置
1.NumCPU()获取当前系统的cpu核数
2.GOMAXPROCS设置当前程序运行时占用的cpu核数
版本1.6之前默认是使用1个核,而之后是全部使用。
好玩的程序:
func doSomething() {
var i int
for {
i++
}
}
func main() {
cpu := runtime.NumCPU()
fmt.Println("本机cpu核数:", cpu)
fmt.Println("输入模拟的cpu数:")
reader := bufio.NewReader(os.Stdin)
buf, _ := reader.ReadBytes('\n')
cmdStr := (string)(buf)
num, err := strconv.Atoi(strings.Trim(cmdStr, "\r\n"))
if err != nil || num > cpu || num <= 0 {
fmt.Println("输入的数字不正确 err:{0}", err)
return
}
//设置核数
runtime.GOMAXPROCS(num)
for i := 0; i < 10; i++ {
//做个死循环
go doSomething()
}
fmt.Println("程序已经开始执行")
time.Sleep(time.Second * 30)
for j := 5; j > 0; j-- {
fmt.Printf("程序倒计时退出: %ds...\n", j)
time.Sleep(time.Second)
}
fmt.Printf("程序退出")
}
我的电脑是8核的,分别运行1 2 4 8,看下cpu的使用率:
图一 未开始运行
图二 运行1个cpu
图三 运行2个cpu
图四 运行4个cpu
图五 运行8个cpu
二、Goroutine的调度原理复习
之前的记录 Go语言中并发的工作原理
来源:https://www.cnblogs.com/dcz2015/p/11225305.html
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 使用工具:Python2.7 点我下载scrapy框架sublime text3一。搭建python(Windows版本) 1.安
- 有一个txt文本如下:151 151 1234561 156421 214156 1523132 031320现希望将两行合并为一行,并将
- 当浏览网页时,总有那么一类网站华丽而富有趣味性。在浏览信息的同时,足够让我们眼前一亮。它们在充分融入动画、视频、游戏、甚至是与众不同的交互操
- mysql密码过期了,今天遇到了连接mysql,总是连接不上去, 错误现象1: An attempt by a client to chec
- 数据结构channel的数据结构在$GOROOT/src/runtime/chan.go文件下:type hchan struct {qco
- 本文实例讲述了Python栈算法的实现与简单应用。分享给大家供大家参考,具体如下:原理:栈作为一种数据结构,是一种只能在一端进行插入和删除操
- 一、FFmpeg 多个音频合并的2种方法多个mp3文件合并成一个mp3文件一种方法是连接到一起ffmpeg64.exe -i "c
- 本文实例讲述了python中split方法用法。分享给大家供大家参考。具体分析如下:split 是非常重要的字符串方法,它是join的逆方法
- 有时候会碰到需求,将字典来反转,即:字典中的键作为值,而字典中的值作为键。对于字典比较小,可以使用普通方法方法一:使用普通方法转换>&
- 本文实例讲述了JSP基本语句用法。分享给大家供大家参考。具体如下:1>JSP指令JSP指令(Directive)作用是与JSP引擎进行
- 因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是
- 前言在做数据报表时,需要对某一时间段分组,以1小时为时间间隔统计各项数据,如9点-10点,10点-11点…,但是现在有种情况,时间有可能不是
- 早上我偶然看见一篇介绍两个Python脚本的博文,其中一个效率更高。这篇博文已经被删除,所以我没办法给出文章链接,但脚本基本可以归结如下:f
- numpy.nan的数据类型是float类型import numpy as nptype(np.nan) # float任何数字和numpy
- Oracle的系统要求 企业版:CPU最低PENTIUM200M推荐PENTIUMIII1G以上 内存最低128M推荐512M 硬盘空间系统
- 前言:记一次golang使用json进行对象copy的内存溢出问题排查问题现象:新增的功能,灰度部署在k8s集群的服务,发现机器老是被打崩,
- 如下所示:import numpy as np# 等差数列print(np.linspace(0.1, 1, 10, endpoint=Tr
- 一、简介1、概述因为信息是展现在命令行中的,众所周知,命令行展现复杂的文本看起来着实累人,于是就想着能像表格那样展示,那看起来就舒服多了。p
- floor() 函数向下舍入为最接近的整数。语法floor(x)参数描述x必需。一个数。说明返回不大于 x 的下一个整数
- Vue中子组件调用父组件的三种方法:1.直接在子组件中通过“this.$parent.event”来