| 33 | |
| 34 | |
| 35 | class ObjectPool: |
| 36 | def __init__(self, queue: Queue, auto_get: bool = False) -> None: |
| 37 | self._queue = queue |
| 38 | self.item = self._queue.get() if auto_get else None |
| 39 | |
| 40 | def __enter__(self) -> str: |
| 41 | if self.item is None: |
| 42 | self.item = self._queue.get() |
| 43 | return self.item |
| 44 | |
| 45 | def __exit__( |
| 46 | self, |
| 47 | Type: Union[type[BaseException], None], |
| 48 | value: Union[BaseException, None], |
| 49 | traceback: Union[TracebackType, None], |
| 50 | ) -> None: |
| 51 | if self.item is not None: |
| 52 | self._queue.put(self.item) |
| 53 | self.item = None |
| 54 | |
| 55 | def __del__(self) -> None: |
| 56 | if self.item is not None: |
| 57 | self._queue.put(self.item) |
| 58 | self.item = None |
| 59 | |
| 60 | |
| 61 | def main(): |
no outgoing calls