ThreadedIterables.jl icon indicating copy to clipboard operation
ThreadedIterables.jl copied to clipboard

Threaded versions of collection functions in Julia

ThreadedIterables.jl

CircleCI Codecov branch Stable docs Latest docs

DEPRECATION NOTICE

This package is very old and unmaintained. Please use ThreadsX.jl instead.

Description

This package adds multi-threaded versions of functions operating on collections. Currently, the package contains the functions foreach, map, reduce, mapreduce, mapfoldl, mapfoldr.

The simplest way to use the package is the @threaded macro, which converts all the supported functions in the expression to their multi-threaded equivalents.

Example:


julia> using ThreadedIterables

julia> a = rand(1:10, 4)
4-element Array{Int64,1}:
  4
  7
 10
  7

julia>@threaded map(x -> 2x, a)
4-element Array{Int64,1}:
  8
 14
 20
 14

Alternatively, the multi-threaded functions can be used directly - tforeach instead of foreach, tmap instead of map etc. Note that for mapreduce, there are actually 3 options: tmapreduce, maptreduce and tmaptreduce. These functions differ in whether the mapping part, the reduction part, or both of them are multi-threaded.