blob: 7717697b0f75dfe328dde44e7bb6d4ce8a572236 [file] [log] [blame]
import threading
import time
class LocalQueue():
ops = 0
stored = 0
uid = 0
empty = 0
def __init__(self, name='unnamed'):
self.items = []
self.name = name
self.uid = LocalQueue.uid
LocalQueue.uid += 1
def put(self, item, block=True):
LocalQueue.ops += 1
LocalQueue.stored += 1
self.items.append(item)
def get(self, block=True, timeout=0):
# TODO(VitalyFedyunin): Add support of block and timeout arguments
LocalQueue.ops += 1
if not len(self.items):
LocalQueue.empty += 1
raise Exception('LocalQueue is empty')
LocalQueue.stored -= 1
return self.items.pop()
class ThreadingQueue():
def __init__(self, name='unnamed'):
self.lock = threading.Lock()
self.items = []
self.name = name
def put(self, item, block=True):
with self.lock:
self.items.append(item)
def get(self, block=True, timeout=0):
# TODO(VitalyFedyunin): Add support of block and timeout arguments
while True:
with self.lock:
if len(self.items) > 0:
return self.items.pop()
if not block:
raise Exception("Not available")
# TODO(VitalyFedyunin): Figure out what to do if nothing in the queue
time.sleep(0.000001)