In [1]:
from Queue import Queue
import threading
import time
In [2]:
Queue?
In [3]:
class Source(threading.Thread):
def __init__(self):
super(Source, self).__init__()
self.queue = Queue(2)
self._stop = threading.Event()
def run(self):
"""Puts training data into a Queue"""
self._stop.unSet()
while not self._stop.isSet():
self.queue.put(self._gen_data())
def stop(self):
self.queue.get()
self._stop.set()
def validation_data(self):
return self._get_data(validation=True)
def _gen_data(self, validation=False):
raise NotImplementedError()
def input_shape(self):
raise NotImplementedError()
def output_shape(self):
raise NotImplementedError()
class NILMSource(Source):
SEQ_LENGTH = 14400
def _gen_data(self, validation=False):
data = None, None # just for testing
return data
class Net(object):
def __init__(self, source):
self.source = source
self.input_shape = source.input_shape()
self.output_shape = source.output_shape()
def train(self, n_iterations=100):
self.source.run()
try:
for i in range(n_iterations):
print self.source.queue.get()
except KeyboardInterrupt as e:
print(e)
finally:
self.source.stop()
self.source.join()
In [4]:
src = Source()
src.start()
In [5]:
sink()
In [6]:
src.stop()
src.join()
In [3]:
q.put?
In [3]:
q.
In [ ]: