#encoding = utf8 import threading from queue import Queue class SyncQueue: def __init__(self, maxsize): self._queue = Queue(maxsize) self._condition = threading.Condition() def put(self, item): with self._condition: while self._queue.full(): self._condition.wait() self._queue.put(item) self._condition.notify() def get(self): with self._condition: while self._queue.empty(): self._condition.wait() item = self._queue.get() self._condition.notify() return item def clear(self): with self._condition: while not self._queue.empty(): self._queue.get() self._queue.task_done() self._condition.notify_all() def size(self): return self._queue.qsize()