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.EventorBetterEvent‘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 theinvertorinvert_indexesoptions.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.Eventreferences 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|eitherevent_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
eventsto signal. Set toNoneto disable wait timeout. When timing out, raisesEventWaitTimeoutiffail=True, otherwise simply returnsNone.fail (bool) – When wait_timeout is hit, will raise
EventWaitTimeoutiffail=True, otherwise will simply returnNone.kwargs – Additional settings
- Key bool invert
(Default:
False) Wait foreventsto become “clear” (False). NOTE: This only works withBetterEventevents.- Key list invert_indexes
Wait for the events at these indexes to become “clear” instead of “set”. If
invertis set toTrue, then we’ll wait for these indexes to become “set” instead of “clear”. NOTE: This only works withBetterEventevents.- Return bool success
Trueifeventsmet thetrigger, otherwiseNone- Return List[_evt_btevt] events
If
BetterEventsare passed, andtriggeris “any”, then a list of the events which were set (or ifinvertisTrue, then events that weren’t set.