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