import pickle


def save_obj(obj, name):
    with open(name + ".pkl", "wb") as f:
        pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)


def load_obj(name):
    with open(name + ".pkl", "rb") as f:
        return pickle.load(f)


# def iid_divide(l, g):
#     '''
#     divide list l among g groups
#     each group has either int(len(l)/g) or int(len(l)/g)+1 elements
#     returns a list of groups
#     '''
#     num_elems = len(l)
#     group_size = int(len(l)/g)
#     num_big_groups = num_elems - g * group_size
#     num_small_groups = g - num_big_groups
#     glist = []
#     for i in range(num_small_groups):
#         glist.append(l[group_size * i : group_size * (i + 1)])
#     bi = group_size*num_small_groups
#     group_size += 1
#     for i in range(num_big_groups):
#         glist.append(l[bi + group_size * i:bi + group_size * (i + 1)])
#     return glist
