Example #1
0
 def put(self, key, value=None):
     e = self.stored.get(key)
     if not e:
         e = Entry(key, value)
         self.stats.Set(e)
         self.stored[key] = e
         if self.cn == self.c:
             i = 0
             while 1:
                 assert i <= self.cn
                 o_key = self.cache[self.hand]
                 o = self.stored[o_key]
                 if o.RUbit == 0:
                     del self.stored[o_key]
                     self.stats.Evict(o)
                     self.cache[self.hand] = key
                     break
                 else:
                     o.RUbit = 0
                 self.hand = (self.hand + 1) % self.cn
                 i += 1
         else:
             # cache not full
             # don't need to evict
             assert self.cn < self.c
             self.cache.append(key)
             self.cn += 1
     else:
         # Overwrite it correctly
         e.value = value
         e.RUbit = 1
     return 1
Example #2
0
 def put(self, key, value=None):
     if key not in self.stored:
         current_time = time.time()
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [ random.randint(0, self.cn-1) for i in xrange(self.k) ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         return 0
Example #3
0
 def put(self, key, value=None):
     if key not in self.stored:
         current_time = time.time()
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [
                 random.randint(0, self.cn - 1) for i in xrange(self.k)
             ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         return 0
Example #4
0
 def put(self, key, value=None):
     e = self.stored.get(key)
     if not e:
         e = Entry(key, value)
         self.stats.Set(e)
         self.stored[key] = e
         if self.cn == self.c:
             i = 0
             while 1:
                 assert i <= self.cn
                 o_key = self.cache[self.hand]
                 o = self.stored[o_key]
                 if o.RUbit == 0:
                     del self.stored[o_key]
                     self.stats.Evict(o)
                     self.cache[self.hand] = key
                     break
                 else:
                     o.RUbit = 0
                 self.hand = (self.hand + 1) % self.cn
                 i += 1
         else:
             # cache not full
             # don't need to evict
             assert self.cn < self.c
             self.cache.append(key)
             self.cn += 1
     else:
         # Overwrite it correctly
         e.value = value
         e.RUbit = 1
     return 1
Example #5
0
def load_past_entries(days=8, excluded_live_ids=None):
    if excluded_live_ids is None:
        excluded_live_ids = ()
    # Note that timestamps in the database are in milliseconds
    now = arrow.get().timestamp * 1000
    x_days_ago = now - 86400 * days * 1000
    return [
        entry for entry in Entry.select().where((Entry.timestamp > x_days_ago)
                                                & (Entry.timestamp < now))
        if entry.live_id not in excluded_live_ids
    ]
Example #6
0
def load_data(local_path):
    res = []
    with open(local_path) as f:
        for line in f.readlines():
            l = line.split(',')
            id = int(l[0])
            diagnosis = -1 if l[1] == 'B' else 1
            ff = [float(x) for x in l[2: 32]]
            features = numpy.array(ff)
            res.append(Entry(id = id, correct = diagnosis, features = features))
    return res
Example #7
0
 def put(self, key, value=None):
     e = self.stored.get(key)
     current_time = time.time()
     if not e:
         # Evict first before inserting (don't want to evict the new item)
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [
                 random.randint(0, self.cn - 1) for i in xrange(self.k)
             ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             o = self.stored[oldest_key]
             self.stats.Evict(o)
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         self.stats.Set(e)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         self.stats.Set(e)
         e.timestamp = current_time
         e.value = value
         return 1
Example #8
0
 def put(self, key, value=None):
     e = self.stored.get(key)
     current_time = time.time()
     if not e:
         # Evict first before inserting (don't want to evict the new item)
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [ random.randint(0, self.cn-1) for i in xrange(self.k) ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             o = self.stored[oldest_key]
             self.stats.Evict(o)
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         self.stats.Set(e)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         self.stats.Set(e)
         e.timestamp = current_time
         e.value = value
         return 1
Example #9
0
    def put(self, key, value=None):
        e = Entry(key)
        for i in xrange(len(self.l)):
            if self.l[i].key == key:
                e = self.l[i]
                return 1

        if len(self.l) == self.cachesize:
            ed = self.l[-1]
            self.l = [
                e
            ] + self.l[:self.cachesize -
                       1]  # Put they key in front and remove the last
        else:
            self.l = [e] + self.l[:self.cachesize]  # Don't remove the last!!
        return 1
Example #10
0
 def put(self, key, value=None):
     e = self.stored.get(key)
     if not e:
         e = Entry(key, value)
         self.stats.Set(e)
         if self.cn == self.c:
             i = random.randint(0, self.cn - 1)  # 0 <= i <= (self.cn-1)
             dkey = self.cache[i]
             de = self.stored[dkey]
             self.stats.Evict(de)
             del self.stored[dkey]
             self.cache[i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         self.stored[key] = e
Example #11
0
File: ARC.py Project: trauzti/mimir
 def put(self, key, value=None):
     e = self.cached.get(key)
     if e:
         self.stats.Set(e)
         e.value = value
         return 1
     e = Entry(key, value)
     self.cached[key] = e
     self.stats.Set(e)
     if key in self.b1:
         self.p = min(self.c, self.p + max(len(self.b2) / len(self.b1) , 1))
         self.replace(key)
         self.b1.remove(key)
         self.t2.appendleft(key)
         return 1
     if key in self.b2:
         self.p = max(0, self.p - max(len(self.b1)/len(self.b2) , 1))
         self.replace(key)
         self.b2.remove(key)
         self.t2.appendleft(key)
         return 1
     if len(self.t1) + len(self.b1) == self.c:
         if len(self.t1) < self.c:
             self.b1.pop()
             self.replace(key)
         else:
             popkey = self.t1.pop()
             de = self.cached[popkey]
             self.stats.Evict(de)
             del self.cached[popkey]
     else:
         total = len(self.t1) + len(self.b1) + len(self.t2) + len(self.b2)
         if total >= self.c:
             if total == (2 * self.c):
                 self.b2.pop()
             self.replace(key)
     self.t1.appendleft(key)
     return 1
Example #12
0
 def put(self, key, value=None):
     if key not in self.stored:
         if self.cn == self.c:
             valid = False
             delkey = None
             while not valid:
                 dist, delkey, valid = heappop(self.heap)
             del self.stored[delkey]
             dn = self.entries[delkey]
             self.stats.Evict(dn)
             del self.entries[delkey]
         else:
             self.cn += 1
         item = [1, key, True]
         heappush(self.heap, item)
         self.stored[key] = item
         e = Entry(key, value)
         self.stats.Set(e)
         self.entries[key] = e
         return 1
     else:
         # TODO: Overwrite it correctly
         return 0
Example #13
0
 def __init__(self, key, value=None):
     Entry.__init__(self, key, value)
     self.next = None
     self.prev = None
Example #14
0
 def parse(self, m, value):
     return Entry.fromResponse(m, value)
Example #15
0
 def parse(self, m, value):
     return Entry.fromResponse(m, value)
Example #16
0
 def __init__(self, key, value=None):
     Entry.__init__(self, key, value)
     self.next = None
     self.prev = None