我想在大列表上做一個並行地圖。代碼看起來有點像這樣:Elixir Stream中的Task.async
big_list
|> Stream.map(&Task.async(Module, :do_something, [&1]))
|> Stream.map(&Task.await(&1))
|> Enum.filter filter_fun
但我檢查流實現而據我瞭解Stream.map
結合了功能和應用組合功能的流,這將意味着順序是這樣的內容:
- 以第一要素
- 創建異步任務
- 等待它完成
- 採取第二elelemnt ...
在這種情況下,它不會做並行。我是對的還是缺少什麼?
如果我是正確的,那這個代碼?
Stream.map Task.async ...
|> Enum.map Task.await ...
這是否會平行運行?
閱讀本 - http://www.theerlangelist.com/2015/07/beyond-taskasync.html – emaillenin