分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
```
package main
import (
"xiyu/models"
"runtime"
"sync"
"github.com/astaxie/beego/orm"
)
var limit = make(chan struct{}, 10)
func getInfos(url,proxy string,cat_id int,goods_thumb string,id int) {
limit <- struct{}{}
defer func() {
<-limit
}()
info :=models.Get_Goods_Info("http://www.ehsy.com/"+url,"not")
if len(info.Goods_name) > 5 {
//insert collect info to mysql
info.Cat_id = cat_id
info.Parent_id = id
info.Url = url
info.Old_thumb = goods_thumb
orm.NewOrm().Insert(&info)
//update the goods url status in mysql
detail_url_model := new(models.GoodsUrl)
detail_url_model.Id = id
detail_url_model.Status = 1
detail_url_model.Update("Status")
}
}
func main() {
NCPU := runtime.NumCPU()
runtime.GOMAXPROCS(NCPU)
models.Init()
goods_url := new(models.GoodsUrl)
var goods_urls []*models.GoodsUrl
count ,_ := goods_url.Query().Filter("status",0).Count() //get total url count
var wg sync.WaitGroup
for i:=0;i<=int(count)/100;i++ {
wg.Add(1)
goods_url.Query().Filter("status",0).Limit(100,i*100).All(&goods_urls,"Cat_id","Url","Id","Img") //get 100 urls
for _,v :=range goods_urls {
go func(url string,proxy string ,cat_id int,img string,id int) {
getInfos(url,proxy,cat_id,img,id) //execute collect action
}(v.Url,"",v.Cat_id,v.Img,v.Id)
}
wg.Done()
}
wg.Wait()
}
```
这段代码运行一段时间后,内存回消耗光,然后停止运行。请问该如何优化呢
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3444 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传