def _deserialize_operand(operand: kv_pb2.Operand, include_key=False, use_serialize=True): if operand.value and len(operand.value) > 0: if use_serialize: return (_EggRoll.value_serdes.deserialize(operand.key), _EggRoll.value_serdes.deserialize( operand.value)) if include_key else _EggRoll.value_serdes.deserialize(operand.value) else: return (bytes_to_string(operand.key), operand.value) if include_key else operand.value return None
def _merge(cursors, use_serialize=True): ''' Merge sorted iterators. ''' entries = [] for _id, it in enumerate(cursors): if it.next(): key, value = it.item() entries.append([key, value, _id, it]) else: it.close() heapify(entries) while entries: key, value, _, it = entry = entries[0] if use_serialize: yield c_pickle.loads(key), c_pickle.loads(value) else: yield bytes_to_string(key), value if it.next(): entry[0], entry[1] = it.item() heapreplace(entries, entry) else: _, _, _, it = heappop(entries) it.close()
def __generate_operand(kvs: Iterable, use_serialize=True): for k, v in kvs: yield kv_pb2.Operand(key=_EggRoll.value_serdes.serialize(k) if use_serialize else bytes_to_string(k), value=_EggRoll.value_serdes.serialize(v) if use_serialize else v)