classAtomicCounter:"""An atomic, thread-safe counter"""def__init__(self,initial:int=0)->None:"""Initialize a new atomic counter to given initial value"""super().__init__()self._value=initialself._lock=threading.Lock()@propertydefvalue(self)->int:returnself._valuedefinc(self,num:int=1)->int:"""Atomically increment the counter by num and return the new value"""withself._lock:self._value+=numreturnself._valuedefdec(self,num:int=1)->int:"""Atomically decrement the counter by num and return the new value"""withself._lock:self._value-=numreturnself._value
def__init__(self,initial:int=0)->None:"""Initialize a new atomic counter to given initial value"""super().__init__()self._value=initialself._lock=threading.Lock()