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")