我想在 go 中并行下载文件,但我的代码永远不会退出:
package main
import (
"fmt"
"io"
"net/http"
"os"
"path/filepath"
"sync"
)
func download_file(file_path string, wg sync.WaitGroup) {
defer wg.Done()
resp, _ := http.Get(file_path)
defer resp.Body.Close()
filename := filepath.Base(file_path)
file, _ := os.Create(filename)
defer file.Close()
size, _ := io.Copy(file, resp.Body)
fmt.Println(filename, size, resp.Status)
}
func main() {
var wg sync.WaitGroup
file_list := []string{
"http://i.imgur.com/dxGb2uZ.jpg",
"http://i.imgur.com/RSU6NxX.jpg",
"http://i.imgur.com/hUWgS2S.jpg",
"http://i.imgur.com/U8kaix0.jpg",
"http://i.imgur.com/w3cEYpY.jpg",
"http://i.imgur.com/ooSCD9T.jpg"}
fmt.Println(len(file_list))
for _, url := range file_list {
wg.Add(1)
fmt.Println(wg)
go download_file(url, wg)
}
wg.Wait()
}
什么原因?我在这里查看:Golang 使用 goroutines 并行下载多个文件,但我没有找到解决方案。调试此类代码的最佳方法是什么?
Qyouu
pxc并发死锁问题
怎么查看golang并发连接数量?
死锁怎么理解?跟操作系统原理里面的死锁是一样的意思吗?
在多线程环境下使用DataFrame.to_sql时MySQL死锁
相关分类