2
我正在製作一個Golang程序,需要下載N文件,然後在每個文件上執行一些任務。尤其是,存在操作的流水線上做每一個SWF文件:如何調整用於下載N個文件的goroutines的數量?
- 做一個HTTP GET請求來獲取文件
- 保存在本地
- 將它轉換爲PNG
順序執行可能效率很低。這樣做N goroutines也可能是非最佳的。
如何選擇/限制goroutines的數量?
我正在製作一個Golang程序,需要下載N文件,然後在每個文件上執行一些任務。尤其是,存在操作的流水線上做每一個SWF文件:如何調整用於下載N個文件的goroutines的數量?
順序執行可能效率很低。這樣做N goroutines也可能是非最佳的。
如何選擇/限制goroutines的數量?
甲goroutine是輕量級的設計:
甲夠程具有一個簡單的模型:它是在相同的地址空間中的其它夠程併發執行的功能。它是輕量級的,比堆棧空間的分配花費更多。堆棧開始很小,所以它們很便宜,並且通過根據需要分配(並釋放)堆存儲來實現增長。
該限制不在您生成的goroutines的數量中,而是在它們的功能中。
在你的情況下,打開文件(寫下載流)同時能夠滿足limit of number of opened files per process or in general
7.不,只是開個玩笑。這完全取決於。你的問題是無法回答的。它主要取決於你對「大」的定義:是100,100,100,100億?你能以多快的速度吸收數據,處理速度有多快?正確的方法是思考,實施,衡量並改進。重複。 – Volker 2014-09-10 11:39:21
42似乎是一個不錯的數字。 – OneOfOne 2014-09-10 11:45:36
我已經修復了關於在Unix上打開的文件的限制的鏈接(在下面的答案中):http://unix.stackexchange.com/q/36841/7490 – VonC 2014-09-10 14:49:32