Download external_dependencies/unitree_sdk2_python/unitree_sdk2py/utils/bqueue.py from chibifire/GR00T-WholeBodyControl: direct link, hf CLI and curl.
- Browser
- Download file 1.6 kB
-
https://huggingface.co/chibifire/GR00T-WholeBodyControl/resolve/main/external_dependencies/unitree_sdk2_python/unitree_sdk2py/utils/bqueue.py
- Command line
-
hf download hf://chibifire/GR00T-WholeBodyControl/external_dependencies/unitree_sdk2_python/unitree_sdk2py/utils/bqueue.py
-
curl -L -o bqueue.py https://huggingface.co/chibifire/GR00T-WholeBodyControl/resolve/main/external_dependencies/unitree_sdk2_python/unitree_sdk2py/utils/bqueue.py
1.6 kB
| from typing import Any | |
| from collections import deque | |
| from threading import Condition | |
| class BQueue: | |
| def __init__(self, maxLen: int = 10): | |
| self.__curLen = 0 | |
| self.__maxLen = maxLen | |
| self.__queue = deque() | |
| self.__condition = Condition() | |
| def Put(self, x: Any, replace: bool = False): | |
| noReplaced = True | |
| with self.__condition: | |
| if self.__curLen >= self.__maxLen: | |
| if not replace: | |
| return False | |
| else: | |
| noReplaced = False | |
| self.__queue.popleft() | |
| self.__curLen -= 1 | |
| self.__queue.append(x) | |
| self.__curLen += 1 | |
| self.__condition.notify() | |
| return noReplaced | |
| def Get(self, timeout: float = None): | |
| with self.__condition: | |
| if not self.__queue: | |
| try: | |
| self.__condition.wait(timeout) | |
| except: | |
| return None | |
| if not self.__queue: | |
| return None | |
| self.__curLen -= 1 | |
| return self.__queue.popleft() | |
| def Clear(self): | |
| with self.__condition: | |
| if self.__queue: | |
| self.__queue.clear() | |
| self.__curLen = 0 | |
| def Size(self): | |
| with self.__condition: | |
| return self.__curLen | |
| def Interrupt(self, notifyAll: bool = False): | |
| with self.__condition: | |
| if notifyAll: | |
| self.__condition.notify() | |
| else: | |
| self.__condition.notify_all() | |