iteratee-0.8.9.6: Iteratee-based I/O

Safe HaskellNone

Data.Iteratee.Parallel

Synopsis

Documentation

psequence_ :: (ListLike s el, Nullable s) => [Iteratee s IO a] -> Iteratee s IO ()Source

Enumerate a list of iteratees over a single stream simultaneously and discard the results. Each iteratee runs in a separate forkIO thread, passes all errors from iteratees up.

parE :: (Nullable s1, Nullable s2, Monoid s1) => Enumeratee s1 s2 IO r -> Enumeratee s1 s2 IO rSource

Transform an Enumeratee into a parallel composable one, introducing one step extra delay, see parI.

parI :: (Nullable s, Monoid s) => Iteratee s IO a -> Iteratee s IO aSource

Transform usual Iteratee into parallel composable one, introducing one step extra delay.

Ex - time spent in Enumerator working on x'th packet Ix - time spent in Iteratee working on x'th packet z - last packet, y = (z-1)'th packet

regular Iteratee: E0 - I0, E1 - I1, E2 - I2 .. Ez -> Iz parallel Iteratee: E0, E1, E2, .. Ez _ I0_ I1_ .. Iy__ Iz

liftParI :: (Nullable s, Monoid s, MonadIO m) => Iteratee s IO a -> Iteratee s m aSource

A variant of parI with the parallelized iteratee lifted into an arbitrary MonadIO.

mapReduceSource

Arguments

:: (Monad m, Nullable s, Monoid b) 
=> Int

maximum number of chunks to read

-> (s -> b)

map function

-> Iteratee s m b 

Perform a parallel map/reduce. The bufsize parameter controls the maximum number of chunks to read at one time. A larger bufsize allows for greater parallelism, but will require more memory.

Implementation of sum

 sum :: (Monad m, LL.ListLike s, Nullable s) => Iteratee s m Int64
 sum = getSum <$> mapReduce 4 (Sum . LL.sum)