def METHOD_NAME(
    self,
    do_build,
    do_build_kwargs,
    do_execute,
    all_parameters,
):
    # constrain the number of child processes to the number of unique values to be run
    self.actual_number_of_subprocesses = min(
        self.max_number_of_subprocesses, len(all_parameters)
    )
    # split the parameters into chunks, one for each child process
    divided_parameters = numpy.array_split(
        all_parameters, self.actual_number_of_subprocesses
    )
    # create an executor and kick off the child processes that will perform the computation
    self.executor = futures.ProcessPoolExecutor(
        max_workers=self.actual_number_of_subprocesses
    )
    for i in range(self.actual_number_of_subprocesses):
        local_parameters = divided_parameters[i]
        # save the mapping of future -> (process number, params that it's running)
        self.running_futures[
            self.executor.submit(
                build_and_execute,
                do_build,
                do_build_kwargs,
                do_execute,
                local_parameters,
            )
        ] = (i, local_parameters)