Sync from v0.13
This commit is contained in:
45
vllm/utils/counter.py
Normal file
45
vllm/utils/counter.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
import threading
|
||||
|
||||
|
||||
class Counter:
|
||||
def __init__(self, start: int = 0) -> None:
|
||||
super().__init__()
|
||||
|
||||
self.counter = start
|
||||
|
||||
def __next__(self) -> int:
|
||||
i = self.counter
|
||||
self.counter += 1
|
||||
return i
|
||||
|
||||
def reset(self) -> None:
|
||||
self.counter = 0
|
||||
|
||||
|
||||
class AtomicCounter:
|
||||
"""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 = initial
|
||||
self._lock = threading.Lock()
|
||||
|
||||
@property
|
||||
def value(self) -> int:
|
||||
return self._value
|
||||
|
||||
def inc(self, num: int = 1) -> int:
|
||||
"""Atomically increment the counter by num and return the new value"""
|
||||
with self._lock:
|
||||
self._value += num
|
||||
return self._value
|
||||
|
||||
def dec(self, num: int = 1) -> int:
|
||||
"""Atomically decrement the counter by num and return the new value"""
|
||||
with self._lock:
|
||||
self._value -= num
|
||||
return self._value
|
||||
Reference in New Issue
Block a user