教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go goroutine异步处理大量数据,后台管道运行

go goroutine异步处理大量数据,后台管道运行

发布时间:2023-01-28   编辑:jiaochengji.com
教程集为您提供go goroutine异步处理大量数据,后台管道运行等资源,欢迎您收藏本站,我们将为您提供最新的go goroutine异步处理大量数据,后台管道运行资源

go goroutine异步处理大量数据,后台管道运行

之前写过一篇文章,也是关于异步处理数据,封装的running,总结缺点可能代码量多而且不方便分割数据,对于我来说当时只实现了一次性将数据放入running运行。虽是后台独立运行但效率并不高。(可能我是一个go的新手玩家,并不能很好的理解,还在摸索学习,望多多指教)

指路之前文章:异步处理封装running

以下是我后来采用的办法,简单易懂

package task

import (
   "fmt"
   "github.com/jinzhu/gorm"
 )

func Worker(id, coin int, jobs <-chan []string) {
   fmt.Printf("正在执行%v个任务\n", id)
   for job := range jobs {
      for _, val := range job {
        //此处为自己的处理过程
      }
   }
}

func test(arr []string) {
   //arr 参数数组,这里我分割了数组 50条数据为一个工作任务
   jobs := make(chan []string)
   total := len(arr)/50   1
   start := 0
   end := 50
   for j := 1; j <= total; j   {
      // 发送任务
      go Worker(j, jobs)
      //数据长度判断,防止超额
      if end > len(arr) {
         end = len(arr)
      }
      jobs <- arr[start:end]
      start  = 50
      end  = 50
   }
   close(jobs)
}
到此这篇关于“go goroutine异步处理大量数据,后台管道运行”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go:Goroutine 的切换过程实际上涉及了什么
GO 语言之 Goroutine 原理解析
Go语言基础(3)
[Go 教程系列笔记] goroutine(协程)
Go 语言到底适合干什么?
golang 深入浅出之 goroutine 理解
Go语言并发
Go语言中通道(channel)用于goroutine通信
简单理解 Goroutine 是如何工作的
兄弟连golang神技(1)-关于 Go 语言的介绍

[关闭]
~ ~