class_docstr: The dispatcher is responsible for assigning tasks to free workers, report results back to the master and
  communicate to the nameserver.
code: def submit_job(self, id, **kwargs):
      self.logger.debug("DISPATCHER: trying to submit job %s" % str(id))
      with self.runner_cond:
          job = Job(id, **kwargs)
          job.time_it("submitted")
          self.waiting_jobs.put(job)
          self.logger.debug(
              "DISPATCHER: trying to notify the job_runner thread."
          )
          self.runner_cond.notify()
  
imports: import threading
  import logging
  import queue
  import time
  import Pyro4
label_desc: Use image node_id 9 for calling the Dispatcher obj's underlying member method code with example usage: obj.submit_job(id) without return types