Parallel stream
A parallelized stream implementation for Elixir
Parallelize some stream operations in Elixir whilst keeping your stream in order. Operates with a worker pool. The project is written primarily in Elixir, distributed under the MIT License license, first published in 2015. Key topics include: elixir, parallelism, parallelize, stream.
ParallelStream

Parallelized stream implementation for elixir
What does it do?
Parallelize some stream operations in Elixir whilst keeping your stream in order.
Operates with a worker pool.
How do I get it?
Add
elixir{:parallel_stream, "~> 1.1.0"}
to your deps in mix.exs like so:
elixirdefp deps do [ {:parallel_stream, "~> 1.1.0"} ] end
Note: Elixir 1.5.0 is required
How to use
Do this to parallelize a map:
elixirstream = 1..10 |> ParallelStream.map(fn i -> i * 2 end) stream |> Enum.into([]) [2,4,6,8,10,12,14,16,18,20]
The generated stream is sorted the same as the input stream.
More supported functions are each (to produce side-effects):
elixir1..100 |> ParallelStream.each(&IO.inspect/1)
filter:
elixirstream = 1..20 |> ParallelStream.filter(fn i -> i |> rem(2) == 0 end) stream |> Enum.into([]) [2,4,6,8,10,12,14,16,18,20]
and filter's counterpart, reject:
elixirstream = 1..20 |> ParallelStream.reject(fn i -> i |> rem(2) == 0 end) stream |> Enum.into([]) [1,3,5,7,9,11,13,15,17,19]
License
MIT
Contributions & Bugfixes are most welcome!
Contributors
Showing top 8 contributors by commit count.
