golang 线程同步简单做法

源代码

package crawler
import (

"fmt"

"math"

"sync"

)


// 上交所爬虫

type Sse struct {

/*

WaitGroup:同步等待组

可以使用Add(),设置等待组中要 执行的子goroutine的数量,

使用wait(),让主程序处于等待状态。直到等待组中子程序执行完毕。解除阻塞		​

子gorotuine对应的函数中。wg.Done(),用于让等待组中的子程序的数量减1

*/

wg sync.WaitGroup

}


// CrawlerStocks 爬取上交所股票列表

func (c *Sse) CrawlerStocks() {


ssesl := SseStockList{}
count := ssesl.GetStockCount()
var pagesize = 100
var pagecount = int(math.Ceil(float64(count) / float64(pagesize)))

c.wg.Add(pagecount)

for i := 0; i < pagecount; i++ {
	go func(index int) {
		fmt.Println("正在拉取第", index, "页,一共", pagecount, "页")
		ssesl.GetQueryData(index, pagesize)

		c.wg.Done()
	}(i + 1)
}

c.wg.Wait()

fmt.Println("数据已拉取完毕喽")

}

输出

2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=1&pageHelp.pageNo=1&pageHelp.pageSize=1&pageHelp.endPage=11&_=1626941637552685000
正在拉取第 17 页,一共 17 页
正在拉取第 12 页,一共 17 页
正在拉取第 1 页,一共 17 页
正在拉取第 9 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=17&pageHelp.pageNo=17&pageHelp.pageSize=100&pageHelp.endPage=171&_=1626941637647913000
正在拉取第 2 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=9&pageHelp.pageNo=9&pageHelp.pageSize=100&pageHelp.endPage=91&_=1626941637647931000
正在拉取第 3 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=3&pageHelp.pageNo=3&pageHelp.pageSize=100&pageHelp.endPage=31&_=1626941637647951000
正在拉取第 10 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=10&pageHelp.pageNo=10&pageHelp.pageSize=100&pageHelp.endPage=101&_=1626941637648266000
正在拉取第 13 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=2&pageHelp.pageNo=2&pageHelp.pageSize=100&pageHelp.endPage=21&_=1626941637647939000
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=13&pageHelp.pageNo=13&pageHelp.pageSize=100&pageHelp.endPage=131&_=1626941637648341000
正在拉取第 14 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=12&pageHelp.pageNo=12&pageHelp.pageSize=100&pageHelp.endPage=121&_=1626941637647982000
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=1&pageHelp.pageNo=1&pageHelp.pageSize=100&pageHelp.endPage=11&_=1626941637647919000
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=14&pageHelp.pageNo=14&pageHelp.pageSize=100&pageHelp.endPage=141&_=1626941637648629000
正在拉取第 15 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=15&pageHelp.pageNo=15&pageHelp.pageSize=100&pageHelp.endPage=151&_=1626941637648746000
正在拉取第 16 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=16&pageHelp.pageNo=16&pageHelp.pageSize=100&pageHelp.endPage=161&_=1626941637648838000
正在拉取第 7 页,一共 17 页
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=7&pageHelp.pageNo=7&pageHelp.pageSize=100&pageHelp.endPage=71&_=1626941637648960000
正在拉取第 8 页,一共 17 页
2021/正在拉取第 5 页,一共 17 页
正在拉取第 4 页,一共 17 页
正在拉取第 11 页,一共 17 页
正在拉取第 6 页,一共 17 页
07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=8&pageHelp.pageNo=8&pageHelp.pageSize=100&pageHelp.endPage=81&_=1626941637649021000
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=5&pageHelp.pageNo=5&pageHelp.pageSize=100&pageHelp.endPage=51&_=1626941637649186000
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=4&pageHelp.pageNo=4&pageHelp.pageSize=100&pageHelp.endPage=41&_=1626941637649204000
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=11&pageHelp.pageNo=11&pageHelp.pageSize=100&pageHelp.endPage=111&_=1626941637649216000
2021/07/22 16:13:57 爬取地址是: http://query.sse.com.cn/security/stock/getStockListData2.do?isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=6&pageHelp.pageNo=6&pageHelp.pageSize=100&pageHelp.endPage=61&_=1626941637649228000
数据已拉取完毕喽
posted @ 2021-07-22 16:16  妖精代码  阅读(187)  评论(0编辑  收藏  举报