class_docstr: FutureTaskCaller is used to create a class via a functions async, in another thread.
  
  For example:
  
  .. code-block:: py
  
      future = FutureTaskCaller().call(func=max, func_cb=None, override_cls=None, 1, 2)
      print('Running other code')
      print(future.result())  # will print '2'
class_docstr_tok: ["FutureTaskCaller","is","used","to","create","a","class","via","a","functions","async",",","in","another","thread",".","For","example",":","..","code-block",":",":","py","future","=","FutureTaskCaller","(",")",".call","(","func=max",",","func_cb=None",",","override_cls=None",",","1",",","2",")","print","(","'Running","other","code","'",")","print","(","future.result","(",")",")","#","will","print","'","2","'"]
code: def get_logger(self):
      if self.__object is not None:
          return self.__object.get_logger()
  
      if self.__deferred_bkg_class is None:
          # we are shutting down, wait until object is available
          return self.__result__().get_logger()
  
      return self.__deferred_bkg_class
  
imports: import os
  from copy import deepcopy
  from time import sleep
  from concurrent.futures import ThreadPoolExecutor
  from typing import Any, Callable, Optional, Union, Generator, List, Type
  from zipfile import ZipFile, ZIP_DEFLATED
  from six.moves.queue import PriorityQueue, Queue, Empty
  from pathlib2 import Path
  from tempfile import mkstemp
  from collections import deque
  from threading import Thread
  from ..debugging.log import LoggerRoot
  from ..storage.util import format_size
label_desc: Use image node_id 7 for calling the FutureTaskCaller obj's underlying member method code with example usage: obj.get_logger() and returns: self, self, self