traffic.core.lazy
- class traffic.core.lazy.LazyTraffic(wrapped_t, stacked_ops, iterate_kw=None, tqdm_kw=None)
Bases:
object
In the following example,
lazy_t
is not evaluated:>>> lazy_t = t.filter().resample('10s') >>> type(t_lazy) traffic.core.lazy.LazyTraffic
You need to call the
.eval()
method for that.- eval(max_workers=1, desc=None, cache_file=None)
The result can only be accessed after a call to
eval()
.- Parameters:
max_workers (int) – (default: 1) Multiprocessing is usually worth it. However, a sequential processing is triggered by default. Keep the value close to the number of cores of your processor. If memory becomes a problem, stick to the default.
desc (None | str) – (default: None) If not None, a tqdm progressbar is displayed with this parameter.
cache_file (str | Path | None) – (default: None) If not None, store the results in cache_file and load the results from the file if it exists.
- Return type:
None | ‘Traffic
Example usage:
The following call
>>> t_lazy.eval(max_workers=4, desc="preprocessing")
is equivalent to the multiprocessed version of
>>> Traffic.from_flights( ... flight.filter().resample("10s") ... for flight in tqdm(t, desc="preprocessing") ... )
When many operations are stacked, this call is more efficient, esp. on large structures, than as many full iterations on the Traffic structure.
Backward compatibility is ensured by an automatic call to eval() with default options.
>>> t_lazy.to_pickle("output_file.pkl") WARNING:root:.eval() has been automatically appended for you. Check the documentation for more options.
- traffic.core.lazy.apply(stacked_ops, idx, flight)
Recursively applies all operations on each Flight. :rtype:
Optional
[Flight
]map operations return Flight
filter operations return a Flight if True, otherwise None
Note that the only valid reduce operation is Traffic.from_flights.
- traffic.core.lazy.lazy_evaluation(default=False, idx_name=None)
A decorator to delegate methods to
Flight
in a lazy manner.Each decorated
Traffic
method returns aLazyTraffic
structure with the corresponding operation stacked.When the default option is set to True, the method returns a
Traffic
when called onTraffic
but is stacked before applications onFlight
objects if called on aLazyTraffic
.- Parameters:
default (
None
|bool
) – (default: False) If set to True, theTraffic
implementation is used when called on aTraffic
structure; and theFlight
implementation is stacked when called on aLazyTraffic
structure.idx_name (
None
|str
) – (default: None) If the method needs the index (from enumerate) produced during the iteration, specify the name of the corresponding argument. (see {Traffic
,Flight
}.assign_id for an example)
- Return type:
Callable
[[Callable
[[Concatenate
[Traffic
,ParamSpec
(P
)]],TypeVar
(R
)]],Callable
[[Concatenate
[Traffic
,ParamSpec
(P
)]],Union
[TypeVar
(R
),LazyTraffic
]]]