docstr: method to be called when a job has finished
  
  this will do some book keeping and call the user defined
  new_result_callback if one was specified
docstr_tok: ["method","to","be","called","when","a","job","has","finished","this","will","do","some","book","keeping","and","call","the","user","defined","new_result_callback","if","one","was","specified"]
code: def job_callback(self, job):
      """
      method to be called when a job has finished
  
      this will do some book keeping and call the user defined
      new_result_callback if one was specified
      """
      self.logger.debug("job_callback for %s started" % str(job.id))
      with self.thread_cond:
          self.logger.debug(
              "job_callback for %s got condition" % str(job.id)
          )
          self.num_running_jobs -= 1
  
          if not self.result_logger is None:
              self.result_logger(job)
          self.iterations[job.id[0]].register_result(job)
          self.config_generator.new_result(job)
  
          if self.num_running_jobs <= self.job_queue_sizes[0]:
              self.logger.debug("HBMASTER: Trying to run another job!")
              self.thread_cond.notify()
  
      self.logger.debug("job_callback for %s finished" % str(job.id))
  
imports: import os
  import threading
  import time
  import math
  import pdb
  import copy
  import logging
  import numpy
  from hpbandster.core.dispatcher import Dispatcher
  from hpbandster.core.result import Result
  from hpbandster.core.base_iteration import WarmStartIteration
label_desc: Use image node_id 7 for calling the Master obj's underlying member method code with example usage: obj.job_callback(job) without return types