docstr: This class is used to encapsulate the output_queue(`queue.Queue`),
  and provides a `get` function. When calling a function of a class
  decorated by `pare.remote_class(wait=False)`, user will get a `FutureObject`
  immediately and can get the real return by calling the `get` function of 
  the `future` object.
  
  For example:
      ```python
      import parl
  
      @parl.remote_class(wait=False)
      class Actor(object):
          def __init__(self):
              pass
  
          def func(self):
              # do something
              return 0
  
      parl.connect("localhost:8010")
  
      actors = Actor()
      future_object = actor.func() # return a `FutureObject`
      result = future_object.get()
      ```
  
  Args:
      output_queue(queue.Queue): queue to get the result of function calling
                                     or set_attr/get_attr
code: def __init__(self, output_queue):
      """This class is used to encapsulate the output_queue(`queue.Queue`),
      and provides a `get` function. When calling a function of a class
      decorated by `pare.remote_class(wait=False)`, user will get a `FutureObject`
      immediately and can get the real return by calling the `get` function of
      the `future` object.
  
      For example:
          ```python
          import parl
  
          @parl.remote_class(wait=False)
          class Actor(object):
              def __init__(self):
                  pass
  
              def func(self):
                  # do something
                  return 0
  
          parl.connect("localhost:8010")
  
          actors = Actor()
          future_object = actor.func() # return a `FutureObject`
          result = future_object.get()
          ```
  
      Args:
          output_queue(queue.Queue): queue to get the result of function calling
                                         or set_attr/get_attr
      """
      self._output_queue = output_queue
      self._already_get = False
      self.internal_lock = threading.Lock()
  
file_path: PARL/parl/remote/future_mode/future_object.py
imports: import time
  import threading
  from six.moves import queue
  from parl.remote.exceptions import FutureGetRepeatedlyError, FutureFunctionError, FutureObjectEmpty
label_desc: Use image node_id 1 to create a new FutureObject object from inherited base classes: object with example: obj = FutureObject(output_queue)