class_docstr: A Worker manager for synthetic functions. Mostly to be used in simulations. 
docstr: Dispatch experiment. 
docstr_tok: ["Dispatch","experiment","."]
code: def _dispatch_experiment(
      self, func_caller, qinfo, worker_id, **kwargs
  ):
      """Dispatch experiment."""
      # Set worker id and whether or not eval_time should be returned
      qinfo.worker_id = worker_id  # indicate which worker
      qinfo = func_caller.eval_from_qinfo(qinfo, **kwargs)
      if self.time_distro == "caller_eval_cost":
          if (
              hasattr(qinfo, "caller_eval_cost")
              and qinfo.caller_eval_cost is not None
          ):
              qinfo.eval_time = qinfo.caller_eval_cost
          else:
              qinfo.eval_time = 1.0
      else:
          qinfo.eval_time = float(self.time_sampler(1))
      qinfo.receive_time = qinfo.send_time + qinfo.eval_time
      # Store the result in latest_results
      self.latest_results.append(qinfo)
      return qinfo
  
imports: from __future__ import print_function
  from __future__ import division
  from argparse import Namespace
  from multiprocessing import Process
  import numpy
  import os
  import pickle
  import shutil
  import time
  from .exd_utils import EVAL_ERROR_CODE
label_desc: Use image node_id 8 for calling the SyntheticWorkerManager obj's underlying member method code with example usage: obj._dispatch_experiment(func_caller, qinfo, worker_id) and returns: qinfo