为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现等待goroutines执行完成后退出main函数?

如何实现等待goroutines执行完成后退出main函数?

凤凰求蛊 2019-04-07 09:38:12
之前爬虫用python写总是出问题,于是换成了Go来写,大致内容如下:for;next_url!=first_url;{count+=1strBody=getContent(next_url)re=regexp.MustCompile("photos-view-id-\\d+.html")next_url=getNextUrl(strBody)re=regexp.MustCompile("http://xxxx/data/[^\"]+")pic_url=re.FindAllString(strBody,2)[1]filename=fmt.Sprintf("%03d.jpg",count)godownloadFromUrl(pic_url,save_path+filename)}但是这样会有一个问题就是我的downloadFromUrl还没执行完成时,程序已经退出了,导致最后几个文件未下载成功。有什么方法可以等待操作完成之后退出程序的么?
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

参考@方泽图的回复,实现方式如下:
varwgsync.WaitGroup
...
for;next_url!=first_url;{
....
filename=fmt.Sprintf("%03d.jpg",count)
wg.Add(1)
gofunc(pic_urlstring,savetostring){
deferwg.Done()
downloadFromUrl(pic_url,saveto)
}(pic_url,saveto)
}
wg.Wait()
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 394 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信