def METHOD_NAME(self,
                      exe,
                      program,
                      reader,
                      fetch_list,
                      num_workers=4):
    """
    launch_evaluation
    :param exe: executor.
    :param program: paddle program.
    :param reader: test reader.
    :param fetch_list: fetch list.
    :param num_workers: num of workers.
    :return: None
    """
    def func(training_triple_pool):
        """func"""
        def run_func(results):
            """run_func"""
            return self.rank_extract(results, training_triple_pool)
        return run_func
    def iterator():
        """iterator"""
        n_used_eval_triple = 0
        start = timeit.default_timer()
        for batch_feed_dict in reader():
            head_score, tail_score = exe.run(program=program,
                                             fetch_list=fetch_list,
                                             feed=batch_feed_dict)
            yield batch_feed_dict["test_triple"], head_score, tail_score
            n_used_eval_triple += 1
            if n_used_eval_triple % 500 == 0:
                print('[{:.3f}s] #evaluation triple: {}/{}'.format(
                    timeit.default_timer(
                    ) - start, n_used_eval_triple, self.reader.test_num))
    res_reader = mp_reader_mapper(
        reader=iterator,
        func=func(self.training_triple_pool),
        num_works=num_workers)
    self.result(res_reader)