2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
在不了解您需要做的工作類型的更多細(xì)節(jié)的情況下,您的方法似乎很好。需要考慮的一些事情:
在處理循環(huán)中重用變量和/或客戶端。例如,重用 HTTP 客戶端而不是重新創(chuàng)建一個(gè)。
具體取決于您的用例調(diào)用如何處理故障。使用 可能會(huì)很有效。這是一個(gè)方便的包裝器,可以在錯(cuò)誤時(shí)停止所有線程,這可能會(huì)為您節(jié)省大量時(shí)間。
erroGroup
在遷移函數(shù)中,請(qǐng)務(wù)必注意有關(guān)閉包和 goroutines 的注意事項(xiàng)。
func main() {
g := new(errgroup.Group)
var urls = []string{
"http://www.someasdfasdfstupidname.com/",
"ftp://www.golang.org/",
"http://www.google.com/",
}
for _, url := range urls {
url := url // https://golang.org/doc/faq#closures_and_goroutines
g.Go(func() error {
resp, err := http.Get(url)
if err == nil {
resp.Body.Close()
}
return err
})
}
fmt.Println("waiting")
if err := g.Wait(); err == nil {
fmt.Println("Successfully fetched all URLs.")
} else {
fmt.Println(err)
}
}

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
我有解決方案。為了實(shí)現(xiàn)如此巨大的處理,我所做的是將有限數(shù)量的goroutine增加到50,并將內(nèi)核數(shù)量從2增加到5。
- 2 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報(bào)