/usr/local/lib64/python3.6/site-packages/torch/utils/data/communication
NameSizeModeActions
__pycache__/-0755rm
eventloop.py15360644editdlrm
iter.py62790644editdlrm
messages.py11710644editdlrm
protocol.py57410644editdlrm
queue.py14000644editdlrm
__init__.py1090644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/utils/data/communication/queue.py (1400B)
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)