def __init__(self, env, clear, ivfidx=None): MemStorage.__init__(self) self.env = env dbname = 'db%06d' % ivfidx if ivfidx else 'db' self.db = LMDBAccessor(self.env, dbname) if clear: self.clear() with self.env.begin() as txn: self.num_items = txn.stat(self.db.db)['entries'] if self.num_items > 0: cursor = txn.cursor(self.db.db) keys = [] codes = [] for key, code in cursor: keys.append(unpack('i', key)[0]) codes.append(pickle.loads(code)) self.keys = np.array(keys) self.codes = np.vstack(tuple(codes))
def __init__(self, env, clear, ivfidx=None): MemStorage.__init__(self) self.env = env dbname = 'db%06d' % ivfidx if ivfidx else 'db' self.db = LMDBAccessor(self.env, dbname) if clear: self.clear() with self.env.begin() as txn: self.num_items = txn.stat(self.db.db)['entries'] if self.num_items > 0: cursor = txn.cursor(self.db.db) keys = [] codes = [] for key, code in cursor: # print len(key), [ord(c) for c in key], unpack('i', key)[0] keys.append(unpack('i', key)[0]) codes.append(pickle.loads(code)) self.keys = np.array(keys) self.codes = np.vstack(tuple(codes))
def add(self, codes, keys): num_new_items = MemStorage.add(self, codes, keys) for idx in xrange(num_new_items): self.db.setki(keys[idx], pickle.dumps(codes[idx], protocol=2))