code: def get(self, block=True, timeout=None):
          
          if not block:
              success, item = ray.get(self.actor.get.remote())
              if not success:
                  raise Empty
          elif timeout is None:
              # Polling
              # Use a not_empty condition variable or return a promise?
              success, item = ray.get(self.actor.get.remote())
              while not success:
                  # Consider adding time.sleep here
                  success, item = ray.get(self.actor.get.remote())
          elif timeout < 0:
              raise ValueError("'timeout' must be a non-negative number")
          else:
              endtime = time.time() + timeout
              # Polling
              # Use a not_full condition variable or return a promise?
              success = False
              while not success and time.time() < endtime:
                  success, item = ray.get(self.actor.get.remote())
              if not success:
                  raise Empty
          return item
docs: Gets an item from the queue.
  
          Uses polling if block=True, so there is no guarantee of order if
          multiple consumers get from the same empty queue.
  
          Returns:
              The next item in the queue.
  
          Raises:
              Empty if the queue is empty and blocking is False.