code: def evaluate(self, genomes, config):
          
          if self.mode != MODE_PRIMARY:
              raise ModeError("Not in primary mode!")
          tasks = [(genome_id, genome, config) for genome_id, genome in genomes]
          id2genome = {genome_id: genome for genome_id, genome in genomes}
          tasks = chunked(tasks, self.secondary_chunksize)
          n_tasks = len(tasks)
          for task in tasks:
              self.inqueue.put(task)
          tresults = []
          while len(tresults) < n_tasks:
              try:
                  sr = self.outqueue.get(block=True, timeout=0.2)
              except (queue.Empty, managers.RemoteError):
                  continue
              tresults.append(sr)
          results = []
          for sr in tresults:
              results += sr
          for genome_id, fitness in results:
              genome = id2genome[genome_id]
              genome.fitness = fitness
docs: Evaluates the genomes.
          This method raises a ModeError if the
          DistributedEvaluator is not in primary mode.