def evaluate()

in simuleval/cli.py [0:0]


def evaluate(args, client, server_process=None):
    info = client.corpus_info()
    num_sentences = info['num_sentences']
    indices = list(range(num_sentences))
    num_processes = args.num_processes
    manager = Manager()
    result_queue = manager.Queue()
    data_writer = DataWriter(args, result_queue)

    if num_processes > 1:
        if num_processes > num_sentences:
            logger.warn(
                f"Number of processes is larger than number sentences ({num_processes}, {num_sentences})."
                f"Will only use {num_sentences} processes"
            )
            num_processes = num_sentences

        # Multi process, split test set into num_processes pieces
        with Pool(args.num_processes) as p:
            p.map(
                partial(decode, args, client, result_queue),
                split_list_into_chunks(indices, num_processes),
            )
    else:
        decode(args, client, result_queue, indices)

    scores = client.get_scores()
    logger.info("Evaluation results:\n" + json.dumps(scores, indent=4))
    logger.info("Evaluation finished")

    data_writer.write_scores(scores)
    data_writer.kill()

    if server_process is not None:
        server_process.kill()
        logger.info("Shutdown server")