code: def _submit_jobs(
      experiment_name: str,
      num_workers: int = 1,
      seed: tp.Optional[int] = None,
      executor: tp.Optional[tp.ExecutorLike] = None,
      print_function: tp.Optional[
          tp.Callable[[Experiment], None]
      ] = None,
      cap_index: tp.Optional[int] = None,
  ) -> tp.List[tp.JobLike[utils.Selector]]:
      """Submits a job for computation
  
      Parameters
      ----------
      experiment_name: str
          name of the experiment plan (must be registered in experiments.registry)
      num_workers: int
          number of workers onto which the jobs will be distributed
      seed: int
          a seed for the experiment plan (if seedable)
      executor: Executor-like object
          an object such as concurrent.futures.ProcessPoolExecutor for running experiments in parallel
      print_function: tp.Callable
          a function to print at the end of each experiment (for custom logging)
      cap_index: int
          index at which the experiment plan must be stopped (convenient for testing if the experiment
          plan holds 10k experiment, we can select the first cap_index=100 for instance)
  
      Returns
      -------
      list
          A list of jobs corresponding to each of the workers
      """
      if executor is None:
          if num_workers > 1:
              raise ValueError(
                  "An executor must be provided to run multiple jobs in parallel"
              )
          executor = SequentialExecutor()
      jobs: tp.List[tp.JobLike[utils.Selector]] = []
      bench = BenchmarkChunk(
          name=experiment_name, seed=seed, cap_index=cap_index
      )
      # instanciate the experiment iterator once (in case data needs to be downloaded (MLDA))
      next(registry[experiment_name]())
      # run
      for chunk in bench.split(num_workers):
          # split experiment this way to avoid one job running most slow settings
          jobs.append(executor.submit(chunk.compute, print_function))
      return jobs
  
imports: import datetime
  import warnings
  import itertools
  import importlib.util
  from pathlib import Path
  import numpy
  import pandas
  import nevergrad.common.typing
  from nevergrad.optimization.utils import SequentialExecutor
  from .experiments import registry
  from .experiments import Experiment
  from .None import utils
label_desc: Use image node_id 3 for calling a global function with example usage: _submit_jobs(experiment_name, num_workers, seed, executor, print_function, cap_index) and returns: jobs