def _get_pair_tuples_parallel()

in sourcecode/scoring/post_selection_similarity_old.py [0:0]


def _get_pair_tuples_parallel(ratings, windowMillis):
    # Sort and group ratings
    ratings_sorted = ratings.sort_values([c.noteIdKey, c.createdAtMillisKey])
    grouped = ratings_sorted.groupby(c.noteIdKey, sort=False)

    # Prepare arguments for parallel processing
    args = [(group, windowMillis) for _, group in grouped]

    # Use multiprocessing Pool
    with mp.Pool(mp.cpu_count()) as pool:
        results = pool.starmap(_get_pair_tuples_process_group, args)

    # Flatten the list of results
    tuples = [tup for sublist in results for tup in sublist]
    return tuples