docs: def divide(self, data_source_factory):
          """Divides the task according to the number of workers."""
          data_length = data_source_factory.length()
          data_interval_length = data_length / self.workers_number() + 1
  
          current_index = 0
          self.responses = []
          while current_index < data_length:
              self.responses.append(0)
              offset = current_index
              limit = min((data_length - current_index, data_interval_length))
              yield data_source_factory.part(limit, offset)
              current_index += limit