code: def gather_votes(self):
          
          async def slave_task(addr, candidates):
              r_manager = await self.env.connect(addr)
              return await r_manager.gather_votes(candidates)
  
          if len(self.candidates) == 0:
              self._log(logging.DEBUG, "Could not gather votes because there "
                        "are no candidates!")
              self._votes = []
              return
          self._log(logging.DEBUG, "Gathering votes for {} candidates."
                    .format(len(self.candidates)))
  
          if self._single_env:
              self._votes = self.env.gather_votes(self.candidates)
          else:
              mgrs = self.get_managers()
              tasks = create_tasks(slave_task, mgrs, self.candidates)
              self._votes = run(tasks)
docs: Gather votes from all the underlying slave environments for the
          current list of candidates.
  
          The votes are stored in :attr:`votes`, overriding any previous votes.