Parallel Map—The “Hello, World” of Erlang
Devin Torres reminded me that every book in the Erlang space must, by law, include a parallel map function. Regular map returns the list that results from applying a function to each element of a collection. The parallel version does the same, but it applies the function to each element in a separate process.
| defmodule Parallel do |
| def pmap(collection, fun) do |
| me = self() |
| collection |
| |> Enum.map(fn (elem) -> |
| spawn_link fn -> (send me, { self(), fun.(elem) }) end |
| end) |
| |> Enum.map(fn (pid) -> |
| receive do { ^pid, result } -> result end |
| end) |
| end |
| end |
Our method contains two transformations (look for the |> operator). The first transformation ...
Get Programming Elixir ≥ 1.6 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.