私は大きなリストの上にパラレルマップを作成したい。コードは次のように多少なります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
が機能を兼ね備え、シーケンスは次のようであることを意味するストリームの要素に組み合わせた機能を適用します。
- 最初の要素を取り、第2 elelemntを取る
- を終了するのを待って、非同期タスク
- を作成...
この場合、パラレルではありません。私は正しいのですか、何か不足していますか?
私が正しいとすれば、このコードはどうですか?
Stream.map Task.async ...
|> Enum.map Task.await ...
これは並行して実行されますか?
がこれを読んで - http://www.theerlangelist.com/2015/07/beyond-taskasync.html – emaillenin