这段go程序会把内存全部消耗光

netaxcess · · 2905 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

``` 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

2905 次点击  
加入收藏 微博
17 回复  |  直到 2015-05-07 10:56:18
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传