ding.interaction.base.threading¶
ding.interaction.base.threading
¶
DblEvent
¶
Overview
A double event object, can open and close. Bases on 2 event objects
__init__(opened=False)
¶
Overview
Constructor of DblEvent
Arguments:
- opened (:obj:bool): Initial status (True means open, False means close, default is False)
wait_for_open(timeout=None)
¶
Overview
Wait until the event is opened
Arguments:
- timeout (:obj:Optional[float]): Waiting time out in seconds
wait_for_close(timeout=None)
¶
Overview
Wait until the event is closed
Arguments:
- timeout (:obj:Optional[float]): Waiting time out in seconds
open()
¶
Overview
Open this event
close()
¶
Overview
Close this event
is_open()
¶
Overview
Get if the event is opened
Returns:
- opened (:obj:bool): The event is opened or not
is_close()
¶
Overview
Get if the event is closed
Returns:
- opened (:obj:bool): The event is closed or not
Full Source Code
../ding/interaction/base/threading.py
1from threading import Event, Lock 2from typing import Optional 3 4 5class DblEvent: 6 """ 7 Overview: 8 A double event object, can open and close. 9 Bases on 2 event objects 10 """ 11 12 def __init__(self, opened: bool = False): 13 """ 14 Overview: 15 Constructor of `DblEvent` 16 Arguments: 17 - opened (:obj:`bool`): Initial status (`True` means open, `False` means close, default is `False`) 18 """ 19 self.__open_event = Event() 20 self.__close_event = Event() 21 self.__lock = Lock() 22 23 if opened: 24 self.__open_event.set() 25 else: 26 self.__close_event.set() 27 28 def wait_for_open(self, timeout: Optional[float] = None): 29 """ 30 Overview: 31 Wait until the event is opened 32 Arguments: 33 - timeout (:obj:`Optional[float]`): Waiting time out in seconds 34 """ 35 self.__open_event.wait(timeout=timeout) 36 37 def wait_for_close(self, timeout: Optional[float] = None): 38 """ 39 Overview: 40 Wait until the event is closed 41 Arguments: 42 - timeout (:obj:`Optional[float]`): Waiting time out in seconds 43 """ 44 self.__close_event.wait(timeout=timeout) 45 46 def open(self): 47 """ 48 Overview: 49 Open this event 50 """ 51 with self.__lock: 52 self.__open_event.set() 53 self.__close_event.clear() 54 55 def close(self): 56 """ 57 Overview: 58 Close this event 59 """ 60 with self.__lock: 61 self.__close_event.set() 62 self.__open_event.clear() 63 64 def is_open(self) -> bool: 65 """ 66 Overview: 67 Get if the event is opened 68 Returns: 69 - opened (:obj:`bool`): The event is opened or not 70 """ 71 with self.__lock: 72 return self.__open_event.is_set() 73 74 def is_close(self) -> bool: 75 """ 76 Overview: 77 Get if the event is closed 78 Returns: 79 - opened (:obj:`bool`): The event is closed or not 80 """ 81 with self.__lock: 82 return self.__close_event.is_set()