class_docstr: Object for conducting search experiments.
      
code: def block_until_done(self):
      already_printed = False
      if self.asynchronous:
          unfinished_states = [
              base.JOB_STATE_NEW,
              base.JOB_STATE_RUNNING,
          ]
  
          def get_queue_len():
              return self.trials.count_by_state_unsynced(
                  unfinished_states
              )
  
          qlen = get_queue_len()
          while qlen > 0:
              if not already_printed:
                  logger.info(
                      "Waiting for %d jobs to finish ..." % qlen
                  )
                  already_printed = True
              time.sleep(self.poll_interval_secs)
              qlen = get_queue_len()
          self.trials.refresh()
      else:
          self.serial_evaluate()
  
imports: from __future__ import print_function
  from __future__ import absolute_import
  from future import standard_library
  from builtins import str
  from builtins import object
  import functools
  import logging
  import os
  import sys
  import time
  import numpy
  from .None import pyll
  from .utils import coarse_utcnow
  from .None import base
label_desc: Use image node_id 3 for calling the FMinIter obj's underlying member method code with example usage: obj.block_until_done() and returns: self