Slightly better -- store only 25 elements of previous freqs state

This commit is contained in:
Crista Lopes
2014-01-02 09:32:59 -08:00
parent 00f16500f7
commit 2ec7080841

View File

@@ -11,28 +11,28 @@ lock = threading.Lock()
class FreqObserver(threading.Thread): class FreqObserver(threading.Thread):
def __init__(self, freqs): def __init__(self, freqs):
threading.Thread.__init__(self) threading.Thread.__init__(self)
self.daemon = True self.daemon,self._end = True, False
self._end = False
# freqs is the part of the model to be observed # freqs is the part of the model to be observed
self._freqs = freqs self._freqs = freqs
self._freqs_0 = sorted(self._freqs.iteritems(), key=operator.itemgetter(1), reverse=True) self._freqs_0 = sorted(self._freqs.iteritems(), key=operator.itemgetter(1), reverse=True)[:25]
self.start() self.start()
def run(self): def run(self):
while not self._end: while not self._end:
self._update_view() self._update_view()
sleep(0.1) sleep(0.1)
self._update_view()
def stop(self): def stop(self):
self._end = True self._end = True
def _update_view(self): def _update_view(self):
lock.acquire() lock.acquire()
freqs_1 = sorted(self._freqs.iteritems(), key=operator.itemgetter(1), reverse=True) freqs_1 = sorted(self._freqs.iteritems(), key=operator.itemgetter(1), reverse=True)[:25]
lock.release() lock.release()
if (freqs_1[0:25] != self._freqs_0[0:25]): if (freqs_1 != self._freqs_0):
self._update_display(freqs_1[0:25]) self._update_display(freqs_1)
self._freqs_0 = freqs_1 self._freqs_0 = freqs_1
def _update_display(self, tuples): def _update_display(self, tuples):
def refresh_screen(data): def refresh_screen(data):