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

时间:2014-09-10 11:28:56

标签: go goroutine

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

  1. 发出http get请求以获取文件
  2. 在本地保存
  3. 以PNG格式转换
  4. 按顺序执行它可能效率很低。使用 N goroutines进行此操作也可能不是最佳的。

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

1 个答案:

答案 0 :(得分:2)

goroutine是设计轻量级的:

  

goroutine有一个简单的模型:它是一个与同一地址空间中的其他goroutine同时执行的函数。它是轻量级的,比堆栈空间的分配花费更多。并且堆栈开始很小,因此它们很便宜,并且通过根据需要分配(和释放)堆存储来增长。

限制不在于您生成的goroutine数量,而在于它们的作用。

在您的情况下,同时打开文件(写下载的流)可以满足limit of number of opened files per process or in general