婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > golang協程池模擬實現群發郵件功能

golang協程池模擬實現群發郵件功能

熱門標簽:評價高的400電話辦理 阿克蘇地圖標注 excel地圖標注分布數據 外呼系統顯本地手機號 電話機器人軟件免費 壽光微信地圖標注 百度地圖標注后傳給手機 涿州代理外呼系統 外呼系統用什么卡

比如批量群發郵件的功能

因為發送郵件是個比較耗時的操作,

如果是傳統的一個個執行 , 總體耗時比較長

可以使用golang實現一個協程池 , 并行發送郵件

pool包下的pool.go文件

package pool

import "log"
//具體任務,可以傳參可以自定義操作
type Task struct {
    Args interface{}
    Do func(interface{})error
}
//協程的個數
var Nums int
//任務通道
var JobChannels =make(chan Task)
//入口的任務通道
var Jobs =make(chan Task)
//執行
func Run(){
    for i:=0;iNums;i++{
        go worker(i)
    }
    for task:=range Jobs{
        JobChannels-task
    }
    close(JobChannels)
}
//實際的工作協程worker
func worker(workId int){
    for task:=range JobChannels{
        ret:=task.Do(task.Args)
        log.Printf("worker_id:%d , worker_ret:%v\n",workId,ret)
    }
}

具體的使用

test包下的pool_test.go測試文件

package test
import (
    "errors"
    "gofly/pool"
    "log"
    "testing"
    "time"
)
//真正的模擬發送郵件
func SendEmail(email interface{})error{
    log.Println(email," start..")
    //模擬耗時
    time.Sleep(time.Second*10)
    return errors.New(email.(string)+" end..")
}
//獲取郵箱并發送
func GetEmails(){
    //如果數據量比較大分頁獲取
    page:=1;
    for{
        //模擬每頁獲取的郵箱
        emails:=[]string{
            "1@qq.com",
            "2@qq.com",
            "3@qq.com",
            "4@qq.com",
            "5@qq.com",
            "6@qq.com",
            "7@qq.com",
        }
        for _,email:=range emails{
            var sendEmailTask=pool.Task{
                Args: email,
                Do: SendEmail,
            }
            //每個郵箱任務塞入任務通道
            pool.Jobs - sendEmailTask
        }
        log.Printf("page %d done!\n",page)
        page++
    }
}
func TestPool(t *testing.T) {
    //定義5個協程
    pool.Nums = 5
    //開個子協程去不停的獲取郵箱
    go GetEmails()
    //執行
    pool.Run()
}

執行go test -v pool_test.go , 效果

到此這篇關于golang協程池模擬實現群發郵件功能的文章就介紹到這了,更多相關golang協程池群發郵件內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang協程池設計詳解
  • golang 40行代碼實現通用協程池
  • GO實現協程池管理的方法

標簽:重慶 銅川 汕頭 蘭州 吐魯番 梅河口 雞西 欽州

巨人網絡通訊聲明:本文標題《golang協程池模擬實現群發郵件功能》,本文關鍵詞  golang,協程池,模擬,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang協程池模擬實現群發郵件功能》相關的同類信息!
  • 本頁收集關于golang協程池模擬實現群發郵件功能的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 达孜县| 顺平县| 滦平县| 新郑市| 册亨县| 大庆市| 博乐市| 唐海县| 邢台县| 石柱| 奎屯市| 梁平县| 云浮市| 新化县| 南汇区| 乌什县| 虹口区| 长宁县| 台南县| 湛江市| 山东| 松原市| 石门县| 山东省| 上虞市| 冷水江市| 天峻县| 阜新| 界首市| 江川县| 灵宝市| 张家港市| 鱼台县| 察隅县| 化州市| 长阳| 徐汇区| 德江县| 长治市| 利津县| 阜康市|