如何调整用于下载 N 个文件的 goroutine 的数量?

我正在制作一个 Golang 程序,它需要下载N 个文件,然后对每个文件执行一些任务。特别是每个单个 SWF 文件都有一个操作管道:

  1. 发出 http get 请求以获取文件

  2. 保存到本地

  3. 将其转换为 PNG

按顺序执行可能会非常低效。用N 个goroutines做这件事也可能不是最优的。

如何选择/限制 goroutine 的数量?


浮云间
浏览 180回答 1
1回答

DIEA

一个够程是轻量级的设计:goroutine 有一个简单的模型:它是一个与同一地址空间中的其他 goroutine 并发执行的函数。它是轻量级的,成本比分配堆栈空间多一点。并且堆栈开始时很小,因此它们很便宜,并且通过根据需要分配(和释放)堆存储来增长。限制不在于你生成的 goroutine 的数量,而在于它们做了什么。在您的情况下,同时打开文件(以写入下载的流)可以满足每个进程或一般情况下打开文件数的限制
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go