go语言的多核并行化例子
时间:2022-05-05
本文章向大家介绍go语言的多核并行化例子,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
写了个多核跑程序的例子,从《go语言编程而来》。关键就是runtime.NumCPU()读出cpu核数,runtime.GOMAXPROCS(MULTICORE)控制使用多个cpu核心。据说以后不会这么麻烦。
看了一下运行时间,其实没有变快- -可能是因为这种纯加法太简单了,作为一个例子以后需要可以看一下。
package main
import (
"fmt"
"runtime"
"time"
)
const COUNT int = 100
const SIZE int = 300
func main() {
var num [SIZE]int
for i := 0; i < COUNT; i++ {
num[i] = i
}
fmt.Println()
fmt.Printf("result=%dn", calmul(num[0:]))
}
func calmul(num []int) int {
t1 := time.Now()
var MULTICORE int = runtime.NumCPU() //number of core
runtime.GOMAXPROCS(MULTICORE) //running in multicore
fmt.Printf("with %d coren", MULTICORE)
ch := make(chan int)
for i := 0; i < MULTICORE; i++ {
go calsome(i*COUNT/MULTICORE, (i+1)*COUNT/MULTICORE, num[0:], ch)
} //divide into some parts
result := 0
for i := 0; i < MULTICORE; i++ {
temp := <-ch
fmt.Printf("multicore #%d result:%dn", i, temp)
result += temp
} //read result of some part from channel,loop will stop after all is read
t2 := time.Now()
fmt.Printf("multicore total time:%dn", t2.Sub(t1))
return result
}
func calsome(from, to int, num []int, ch chan int) {
someresult := 0
for i := from; i < to; i++ {
someresult += num[i]
}
ch <- someresult //put result in channel
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP下载大文件失败并限制下载速度的实例代码
- thinkphp5框架实现的自定义扩展类操作示例
- python导入库的具体方法
- PHP+jQuery实现双击修改table表格功能示例
- 基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
- Laravel推荐使用的十个辅助函数
- PHP htmlentities()函数用法讲解
- thinkphp5框架API token身份验证功能示例
- PHP基于mcript扩展实现对称加密功能示例
- php和asp语法上的区别总结
- 解决python pandas读取excel中多个不同sheet表格存在的问题
- .img/.hdr格式转.nii格式的操作
- PHP实现的操作数组类库定义与用法示例
- python使用nibabel和sitk读取保存nii.gz文件实例
- PHP从尾到头打印链表实例讲解