go 语言第三方库parallel的并行使用
2017-09-07 10:54
99 查看
下面介绍一下go语言第三方库parallel的并行使用:
https://github.com/buptmiao/parallel中可以查看库的使用用例。
parallel是一个go语言并行程序库, 用于不改变现有接口声明前提下的业务聚合或者重构.
如果需要循环某一个函数(oneDBAlarmCodeAnaylse),只是参数不同(db, userinfo),则可以使用parallel,
它可以并行运行,极大提高运行速度。
SetMaxProcs()函数表明parallel只能使用所有可用CPU的一半。
结果results中就是函数oneDBAlarmCodeAnaylse返回的[]bson.M类型的数据,
它会把leng个[]bson.M数据存在[][]bson.M类型的results中。
https://github.com/buptmiao/parallel中可以查看库的使用用例。
parallel是一个go语言并行程序库, 用于不改变现有接口声明前提下的业务聚合或者重构.
如果需要循环某一个函数(oneDBAlarmCodeAnaylse),只是参数不同(db, userinfo),则可以使用parallel,
它可以并行运行,极大提高运行速度。
SetMaxProcs()函数表明parallel只能使用所有可用CPU的一半。
结果results中就是函数oneDBAlarmCodeAnaylse返回的[]bson.M类型的数据,
它会把leng个[]bson.M数据存在[][]bson.M类型的results中。
func (this *PublicReport) ProvinceAlmCodeAlmTrendAddHour(userinfo bson.M) { SetMaxProcs() var err interface{} length := len(userinfo) p := parallel.NewParallel() pchild := make([]*parallel.Parallel, leng) results := make([][]bson.M, length) for i := 0; i < length; i++ { db := userinfo[i] pchild[i] = p.NewChild() pchild[i].Except(ExceptionHandler).SetReceivers(&err) pchild[i].Register(this.oneDBAlarmCodeAnaylse,db, userinfo).SetReceivers(&results[i]) } p.Run() if nil != err { returnVal := make(bson.M) this.HandleErrorTwo(err.(error), "AlarmCodeAnaylse", returnVal) } log.Error("results", len(results), results) } func (this *PublicReport) oneDBAlarmCodeAnaylse(db string, userinfo bson.M) []bson.M { } func SetMaxProcs() { maxCPU := runtime.NumCPU() halfCPU := int(0.5 * float32(maxCPU)) if halfCPU < 1 { halfCPU = 1 } runtime.GOMAXPROCS(halfCPU) }
相关文章推荐
- Go语言 IDE之Gogland配置使用
- 多核计算与并发编程(三) 使用Go语言的管道
- Go语言 IDE之Gogland配置使用
- 在Go语言程序中使用gojson来解析JSON格式文件
- Go语言中定时器cron的基本使用教程
- Mysql的Go语言驱动--Go-MySQL-Driver的使用
- 53.笔记go语言——defer,panic,recover使用场景
- Go语言linux下构造tcp数据包(不使用net包和Cgo)
- 为什么要使用 Go 语言?Go 语言的优势在哪里?
- 使用Vscode调试go语言问题
- 8天玩转并行开发——第一天 Parallel的使用
- Go语言实现的简单TCP服务及使用MySql
- go语言笔记——append是内置的函数!!!new是一个函数!!!调试可以使用闭包,本质上是print调试,尼玛!
- Go语言数组的使用
- go 语言使用ssh包连接操作Linux服务器,使用ping包查看服务器网络是否正常,使用cron包定时查询该服务器CPU使用情况
- 为什么要使用 Go 语言,Go 语言的优势在哪里?
- Go语言使用Beego的ORM插入Mysql后,时区不一致的解决方案
- go语言使用官方的 log package 来记录日志
- 使用GO语言开发 Redis数据监控程序
- 使用 Go 构建一个解释型语言