【发布时间】:2015-12-11 21:30:09
【问题描述】:
我想在一个大列表上做一个平行映射。代码看起来有点像这样:
big_list
|> Stream.map(&Task.async(Module, :do_something, [&1]))
|> Stream.map(&Task.await(&1))
|> Enum.filter filter_fun
但我正在检查 Stream 实现,据我了解 Stream.map 组合了函数并将组合函数应用于流中的元素,这意味着序列是这样的:
- 取第一个元素
- 创建异步任务
- 等待它完成
- 拿第二个元素...
在这种情况下,它不会并行执行。我是对的还是我错过了什么?
如果我是对的,那么这段代码呢?
Stream.map Task.async ...
|> Enum.map Task.await ...
这会并行运行吗?
【问题讨论】:
-
@LeninRajRajasekaran 链接断开
标签: parallel-processing elixir