pescador.mux.ShuffledMux¶
-
class
pescador.mux.
ShuffledMux
(streamers, weights=None, random_state=None)¶ A variation on a mux, which takes N streamers, and samples from them equally, guaranteeing all N streamers to be “active”.
ShuffledMux automatically restarts streams when they die.
For a more nuanced behavior, consider using StochasticMux with single_active=True.
Examples
Sample three streams equally:
>>> a = pescador.Streamer("a") >>> b = pescador.Streamer("b") >>> c = pescador.Streamer("c") >>> mux = pescador.ShuffledMux([a, b, c]) >>> print("".join(mux(max_iter=9))) 'babcbcabb' >>> print("".join(mux(max_iter=30))) 'bacbabcaabccbcaccbabccbcaaccba'
Sample stream ‘a’ twice as often as ‘b’ or ‘c’:
>>> wmux = pescador.ShuffledMux([a, b, c], weights=[0.5, 0.25, 0.25]) >>> print("".join(wmux(max_iter=9))) 'caaabaaab' >>> print("".join(wmux(max_iter=30))) 'acacababcaabcaaacaaccabcbaaaaa'
-
__init__
(streamers, weights=None, random_state=None)¶ Parameters: streamers : iterable of streamers
The collection of streamer-type objects
weights : np.ndarray or None
Optional weighting for
streamers
. IfNone
, then weights are assumed to be uniform. Otherwise,weights[i]
defines the sampling proportion ofstreamers[i]
.Must have the same length as
streamers
.random_state : None, int, or np.random.RandomState
If int, random_state is the seed used by the random number generator;
If RandomState instance, random_state is the random number generator;
If None, the random number generator is the RandomState instance used by np.random.
Methods
__init__
(streamers[, weights, random_state])Parameters: cycle
([max_iter])Iterate from the streamer infinitely. iterate
([max_iter])Yields items from the mux, and handles stream exhaustion and replacement. -