使用Goroutines 在Golang 中並行化文件下載
問題:
我們可以利用🎜>我們可以利用🎜>我們可以利用🎜>
我們可以利用🎜>我們可以利用🎜><code class="go">package main import ( "fmt" "io" "io/ioutil" "net/http" "net/url" "os" "path/filepath" "sync" ) // ... (existing Dropbox access token handling code) var wg sync.WaitGroup func downloadFile(file File, token TokenResponse) { // Acquire WaitGroup counter wg.Add(1) defer wg.Done() // Release counter when function returns downloadURL := fmt.Sprintf("https://api-content.dropbox.com/1/files/dropbox/%s?access_token=%s", file.Path, token.AccessToken) resp, err := http.Get(downloadURL) if err != nil { panic(err) } defer resp.Body.Close() filename := filepath.Base(file.Path) outFile, err := os.Create(filename) if err != nil { panic(err) } defer outFile.Close() io.Copy(outFile, resp.Body) } func main() { // ... (existing Dropbox authorization and file list code) // Spawn goroutines for file downloads for _, file := range flr.FileList { go downloadFile(file, tr) if count >= 2 { break } } // Wait for all goroutines to complete before exiting wg.Wait() }</code>
我們可以利用Goroutines同時下載多個檔案?
程式碼上下文:此修改後的程式碼使用sync.WaitGroup來確保主goroutine不會退出,直到所有檔案下載完成。這允許 goroutine 並行下載文件,從而提高效能。以上是## Goroutines 可以加快 Golang 中的檔案下載速度嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!