def calc_avg_rd_start_time_end_time_subprocess(order,
    break_points_share_array, reuse_dist_share_array, q, **kwargs):
    """
    the child process for calculating average reuse distance in each block, each child process will calculate for
    a column with fixed starting time
    :param q:
    :param reuse_dist_share_array:
    :param break_points_share_array:
    :param order: the order of column the child is working on
    :return: a list of result in the form of (x, y, hit_ratio) with x as fixed value
    """
    result_list = []
    rd = 0
    never_see = 0
    count = 0
    for i in range(order + 1, len(break_points_share_array)):
        for j in range(break_points_share_array[i - 1],
            break_points_share_array[i]):
            if reuse_dist_share_array[j] != -1:
                rd += reuse_dist_share_array[j]
                count += 1
            else:
                never_see += 1
        if break_points_share_array[i] - break_points_share_array[order
            ] - never_see != 0:
            result_list.append((order, i - 1, rd / (
                break_points_share_array[i] - break_points_share_array[
                order] - never_see)))
    q.put(result_list)
