ParallelStream.Filter (Parallel Stream v1.1.0) View Source

The filter iterator implementation

Link to this section Summary

Functions

Creates a stream that will apply the given function on enumeration in parallel and only pass the values for which the function returns truthy downstream.

Creates a stream that will apply the given function on enumeration in parallel and only pass the values for which the function returns falsy downstream.

Link to this section Functions

Link to this function

filter(stream, mapper, options \\ [])

View Source

Creates a stream that will apply the given function on enumeration in parallel and only pass the values for which the function returns truthy downstream.

Options

These are the options:

  • :num_workers – The number of parallel operations to run when running the stream.
  • :worker_work_ratio – The available work per worker, defaults to 5. Higher rates will mean more work sharing, but might also lead to work fragmentation slowing down the queues.

Examples

Map and filter the even numbers:

iex> parallel_stream = 1..5 |> ParallelStream.filter(fn i -> i |> rem(2) == 0 end)
iex> parallel_stream |> Enum.to_list
[2,4]
Link to this function

reject(stream, mapper, options \\ [])

View Source

Creates a stream that will apply the given function on enumeration in parallel and only pass the values for which the function returns falsy downstream.

Options

These are the options:

  • :num_workers – The number of parallel operations to run when running the stream.
  • :worker_work_ratio – The available work per worker, defaults to 5. Higher rates will mean more work sharing, but might also lead to work fragmentation slowing down the queues.

Examples

Map and reject the even numbers:

iex> parallel_stream = 1..5 |> ParallelStream.reject(fn i -> i |> rem(2) == 0 end)
iex> parallel_stream |> Enum.to_list
[1,3,5]