event_multi_wait

privex.helpers.thread.event_multi_wait(*events: Union[privex.helpers.thread.BetterEvent, threading.Event], trigger='and', event_sleep=0.5, wait_timeout=None, fail=True, **kwargs) → Optional[Union[bool, List[Union[privex.helpers.thread.BetterEvent, threading.Event]]]][source]

Wait for multiple threading.Event or BetterEvent ‘s to become “set”, or “clear”.

For standard threading.Event ‘s - only “set” can be waited on. You must use BetterEvent (generally works as a drop-in replacement) to be able to use the invert or invert_indexes options.

Basic example:

>>> do_something_else = Event()
>>> stop_running = Event()
>>>
>>> def some_thread():
...     # do some stuff...
...     # now we wait for further instructions, until either do_something_else or stop_running is signalled:
...     event_multi_wait(do_something_else, stop_running, trigger='any')
...     if stop_running.is_set(): return False
...     if do_something_else.is_set():
...         # do something else.
Parameters
  • events (Event|BetterEvent) – Multiple threading.Event references to be waited on.

  • trigger (str) – To return when ALL events are set, specify one of and|all|every, while to return when ANY of the specified events are set, specify one of or|any|either

  • event_sleep (float|int) – The maximum amount of time per event check iteration. This is divided by the amount of events which were passed, so we can use the highly efficient event.wait() method.

  • wait_timeout (float|int) – The maximum amount of time (in seconds) to wait for all/any of the events to signal. Set to None to disable wait timeout. When timing out, raises EventWaitTimeout if fail=True, otherwise simply returns None.

  • fail (bool) – When wait_timeout is hit, will raise EventWaitTimeout if fail=True, otherwise will simply return None.

  • kwargs – Additional settings

Key bool invert

(Default: False) Wait for events to become “clear” (False). NOTE: This only works with BetterEvent events.

Key list invert_indexes

Wait for the events at these indexes to become “clear” instead of “set”. If invert is set to True, then we’ll wait for these indexes to become “set” instead of “clear”. NOTE: This only works with BetterEvent events.

Return bool success

True if events met the trigger, otherwise None

Return List[_evt_btevt] events

If BetterEvents are passed, and trigger is “any”, then a list of the events which were set (or if invert is True, then events that weren’t set.