code: def run_search(opt_pros, distribution, n_processes):
      opts = list(opt_pros.values())
  
      processes = list(opt_pros.keys())
      optimizers = list(opt_pros.values())
      process_infos = list(zip(processes, optimizers))
  
      if n_processes == "auto":
          n_processes = len(process_infos)
  
      if n_processes == 1:
          results_list = single_process(_process_, process_infos)
      else:
          (distribution, process_func), dist_paras = _get_distribution(
              distribution
          )
  
          results_list = distribution(
              process_func, process_infos, n_processes
          )
  
      return results_list
  
imports: from .distribution import single_process, joblib_wrapper, multiprocessing_wrapper, pathos_wrapper
  from .process import _process_
label_desc: Use image node_id 3 for calling a global function with example usage: run_search(opt_pros, distribution, n_processes) and returns: results_list