第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求大佬指點哈!go協(xié)程管道的一個寫法求大佬指點!

求大佬指點哈!go協(xié)程管道的一個寫法求大佬指點!

胡子哥哥 2019-10-19 09:05:10
目前在爬取一個網(wǎng)站但是加協(xié)程的時候管道老是阻塞;funcmain(){GetHome()}//獲取首頁數(shù)據(jù)funcGetHome(){//homeResult是通過正則拿到全部的詳情地址for_,vrangehomeResult{GetDetail(homeResult[1])}}//獲取詳情內(nèi)容funcGetDetail(uristring){//這里通過正則獲取到內(nèi)容的圖片地址for_,vrange()imgResult{GetDetailImg(imgResult[1])}}//獲取詳情中的圖片funcGetDetailImg(uristring){//這里下載圖片}以上代碼如果加協(xié)程后居然會導(dǎo)致管道阻塞;在每個方法調(diào)用的時候加上go咋樣加管道呢?請大神解答(PS:有紅包哦);
查看完整描述

2 回答

?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗 獲得超2個贊

一個簡單的訂閱-發(fā)布模型,先啟動訂閱,然后將獲取到的內(nèi)容發(fā)布到通道,訂閱會自動執(zhí)行下載。
var(
imgAddrCh=make(chanstring,1024)
)
funcmain(){
goGetDetailImg()
GetHome()
close(imgAddrCh)
}
//獲取首頁數(shù)據(jù)
funcGetHome(){
//homeResult是通過正則拿到全部的詳情地址
for_,vrangehomeResult{
GetDetail(homeResult[1])
}
}
//獲取詳情內(nèi)容
funcGetDetail(uristring){
//這里通過正則獲取到內(nèi)容的圖片地址
for_,vrange()imgResult{
imgAddrCh<-v
}
}
//獲取詳情中的圖片
funcGetDetailImg(){
foruri:=rangeimgAddrCh{
//下載圖片
}
                            
查看完整回答
反對 回復(fù) 2019-10-19
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊

簡單版本的:
packagemain
typeDetailDatastring
typeImageDatastring
var(
detailCacheSize=100
imageCacheSize=200
detailCh=make(chanDetailData,detailCacheSize)
imageCh=make(chanImageData,imageCacheSize)
wg=sync.WaitGroup{}
)
funcmain(){
wg.Add(2)
goFetchDetail()
goFetchImage()
GetHome(urlstring)
wg.Wait()
}
funcGetHome(urlstring){
vardetails[]DetailData
//getdetailsfromhomeurl.
//senddetailtochannel
for_,detail:=rangedetails{
detailCh<-detail
}
close(detailCh)
}
funcFetchDetail(){
deferwg.Done()
varimages[]ImageData
fordetail:=rangedetailCh{
//getimages
forimage:=rangeimages{
imageCh<-image
}
}
close(imageCh)
}
funcFetchImage(uristring){
deferwg.Done()
forimage:=rangeimageCh{
//downloadimage
}
}
如果量非常大,還可以啟動多個GetDetail和GetDetailImg的協(xié)程,然后動態(tài)監(jiān)測數(shù)據(jù)是否執(zhí)行完成,然后做closechannel操作。
                            
查看完整回答
反對 回復(fù) 2019-10-19
  • 2 回答
  • 0 關(guān)注
  • 422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號