class_docstr: The dispatcher is responsible for assigning tasks to free workers, report results back to the master and
  communicate to the nameserver.
class_docstr_tok: ["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