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
0
投稿
猜你喜欢
- JS操作二进制很麻烦,而且一直没有一个好的无损压缩工具来实现纯文本的压缩。所以钻研了一段时间的gzip,后来发现还是仅用 LZ77 比较容易
- print() 函数使用以 % 开头的转换说明符对各种类型的数据进行格式化输出。转换说明符(Conversion Specifier)只是一
- XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能,这使XML从根本
- PyType_Type和PyBaseObject_TypePyObject和PyTypeObject内容的最后指出下图中对实例对象和类型对象
- Pytorch one_hot编码函数解读one_hot编码定义在一个给定的向量中,按照设定的最值–可以是向量中包含的最
- 简介程序中的数在计算机内存中都是以二进制的形式存在的,位运算就是直接对整数在内存中对应的二进制位进行操作,一般是将数字化为二进制数后进行操作
- 一、安装pyinstallerPyInstaller是一个用来将Python程序打包成一个独立可执行文件的第三方包。因是第三方包,所以需要安
- 前言:jieba是优秀的中文分词第三方库,由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组,这种手段叫做分
- 记住:这时候08安装的时候要自定义一个实例 比如:mysql2008(不能在使用默认实例了) sql server 2008 express
- 首先编写py程序:printtest.pydef test(): print('print test')将以上.
- math 标准库math 标准库提供了一些 常量如 int64 类型的最大值、float64 类型的最大值等,和常用的数学计算函数。常用函数
- 1、命令模式(按Esc键):Enter:转入编辑模式Shift-Enter:运行本单元,选中下个单元Ctrl-Enter:运行本单元Alt-
- 本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明。1. ran
- 按照 官方教程 ,下载安装包,点击安装后,如需在命令行启动,还需设置命令路径:在命令行中,打开配置文件 .bash_profile:vim
- 环境:winxp sp2 ,mysql5.0.18,mysql odbc 3.51 driver 表采用 myisam引擎。access 2
- 本文实例讲述了Django框架登录加上验证码校验实现验证功能。分享给大家供大家参考,具体如下:验证码生成函数pip install Pill
- 简介想写一个登录注册的demo,但是以前的demo数据都写在程序里面,每一关掉程序数据就没保存住。。于是想着写到配置文件里好了Python自
- 前言在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功
- 如下所示:Numpy中reshape的使用方法为:numpy.reshape(a, newshape, order='C')
- 本文实例讲述了Python正则抓取新闻标题和链接的方法。分享给大家供大家参考,具体如下:#-*-coding:utf-8-*-import