Skip to content

Allof

Wait for all events in a set to complete.

AllOf

Bases: Event

Wait for all of a set of events.

Source code in src/asimpy/allof.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class AllOf(Event):
    """Wait for all of a set of events."""

    def __init__(self, env: Environment, **events: Any):
        """
        Construct new collective wait.

        Args:
            env: simulation environment.
            events: name=thing items to wait for.

        Example:

        ```
        name, value = await AllOf(env, a=q1.get(), b=q2.get())
        ```
        """
        assert len(events) > 0
        super().__init__(env)

        self._events = {}
        self._results = {}

        for key, obj in events.items():
            evt = ensure_event(env, obj)
            self._events[key] = evt
            evt._add_waiter(_AllOfWatcher(self, key))

    def _child_done(self, key, value):
        self._results[key] = value
        if len(self._results) == len(self._events):
            self.succeed(self._results)

__init__(env, **events)

Construct new collective wait.

Parameters:

Name Type Description Default
env Environment

simulation environment.

required
events Any

name=thing items to wait for.

{}

Example:

name, value = await AllOf(env, a=q1.get(), b=q2.get())
Source code in src/asimpy/allof.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def __init__(self, env: Environment, **events: Any):
    """
    Construct new collective wait.

    Args:
        env: simulation environment.
        events: name=thing items to wait for.

    Example:

    ```
    name, value = await AllOf(env, a=q1.get(), b=q2.get())
    ```
    """
    assert len(events) > 0
    super().__init__(env)

    self._events = {}
    self._results = {}

    for key, obj in events.items():
        evt = ensure_event(env, obj)
        self._events[key] = evt
        evt._add_waiter(_AllOfWatcher(self, key))