mosaik.util — Utility classes and functions¶
This module contains some utility functions and classes.
- mosaik.util.sync_process(generator, world, *, errback=None, ignore_errors=False)¶
Synchronously execute a SimPy process defined by the generator object generator.
A world instance is required to run the event loop.
You can optionally provide a errback (error callback) which will be called with no arguments if an error occurs.
If ignore_errors is set to
True, no errors will be printed.
- mosaik.util.sync_call(sim, funcname, args, kwargs)¶
Start a SimPy process to make the func() call to a simulator behave like it was synchronous.
Return the result of the func() call.
SimulationErrorif an exception occurs.
- mosaik.util.connect_many_to_one(world, src_set, dest, *attrs, async_requests=False)¶
connect()each entity in src_set to dest.
connect()for more details.
- mosaik.util.connect_randomly(world, src_set, dest_set, *attrs, evenly=True, max_connects=inf)¶
connect()the entities from src_set to the entities from dest_set and return a subset of dest_set containing all entities with a connection.
world is an instance of the
Worldto which the entities belong.
src_set and dest_set are iterables containing
Entityinstances. src_set may be empty, dest_set must not be empty. Each entity of src_set will be connected to an entity of dest_set, but not every entity of dest_set will necessarily have a connection (e.g., if you connect a set of three entities to a set of four entities). A set of all entities from dest_set, to which at least one entity from src_set was connected, will be returned.
attrs is a list of attribute names of pairs as in
If the flag evenly is set to
True, entities connections will be distributed as evenly as possible. That means if you connect a set of three entities to a set of three entities, there will be three 1:1 connections; if you connect four entities to three entities, there will be one 2:1 and two 1:1 connections. If evenly is set to
False, connections will be truly random. That means if you connect three entities to three entities, you may either have three 1:1 connections, one 2:1 and two 1:1 connections or just one 3:1 connection.
max_connects lets you set the maximum number of connections that an entity of dest_set may receive. This argument is only taken into account if evenly is set to