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
数据已拉取完毕喽

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章