chcę zrobić równoległą mapę nad wielkim listy. Kod wygląda nieco jak poniżej:Task.async w Elixir Stream
big_list
|> Stream.map(&Task.async(Module, :do_something, [&1]))
|> Stream.map(&Task.await(&1))
|> Enum.filter filter_fun
Ale sprawdzał realizację Stream io ile rozumiem Stream.map
łączy funkcje i zastosowanie funkcji w połączeniu z elementami w strumieniu, co oznaczałoby, że sekwencja jest tak:
- Weźmy pierwszy element
- Utwórz zadanie aSYNC
- czekać na to, aby zakończyć
- zająć drugie elelemnt ...
W tym przypadku, to nie robi tego równolegle. Czy mam rację, czy też czegoś brakuje?
Jeśli mam rację, a co z tym kodem?
Stream.map Task.async ...
|> Enum.map Task.await ...
Czy to będzie działać równolegle?
przeczytać - http://www.theerlangelist.com/2015/07/beyond-taskasync.html – emaillenin