我制作的Golang程序需要下载 N 文件,然后对每个文件执行一些任务。特别是在每个SWF文件上都有一个操作管道:
按顺序执行它可能效率很低。使用 N goroutines进行此操作也可能不是最佳的。
如何选择/限制goroutines的数量?
答案 0 :(得分:2)
goroutine是设计轻量级的:
goroutine有一个简单的模型:它是一个与同一地址空间中的其他goroutine同时执行的函数。它是轻量级的,比堆栈空间的分配花费更多。并且堆栈开始很小,因此它们很便宜,并且通过根据需要分配(和释放)堆存储来增长。
限制不在于您生成的goroutine数量,而在于它们的作用。
在您的情况下,同时打开文件(写下载的流)可以满足limit of number of opened files per process or in general