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
orBetterEvent
‘s to become “set”, or “clear”.For standard
threading.Event
‘s - only “set” can be waited on. You must useBetterEvent
(generally works as a drop-in replacement) to be able to use theinvert
orinvert_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 ofor|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 toNone
to disable wait timeout. When timing out, raisesEventWaitTimeout
iffail=True
, otherwise simply returnsNone
.fail (bool) – When wait_timeout is hit, will raise
EventWaitTimeout
iffail=True
, otherwise will simply returnNone
.kwargs – Additional settings
- Key bool invert
(Default:
False
) Wait forevents
to become “clear” (False
). NOTE: This only works withBetterEvent
events.- Key list invert_indexes
Wait for the events at these indexes to become “clear” instead of “set”. If
invert
is set toTrue
, then we’ll wait for these indexes to become “set” instead of “clear”. NOTE: This only works withBetterEvent
events.- Return bool success
True
ifevents
met thetrigger
, otherwiseNone
- Return List[_evt_btevt] events
If
BetterEvents
are passed, andtrigger
is “any”, then a list of the events which were set (or ifinvert
isTrue
, then events that weren’t set.