code: def notify_ready(self, apply_result):
          
          first_item = False
          self._cond.acquire()
          try:
              self._collection.append(apply_result)
              first_item = len(self._collection) == 1
  
              self._cond.notifyAll()
          finally:
              self._cond.release()
  
          if first_item and self._to_notify is not None:
              self._to_notify._set_value(iter(self))
docs: Called by the ApplyResult object (already registered via
          register_result()) that it is now ready (ie. the Job's result
          is available or an exception has been raised).
          \param apply_result ApplyResult object telling us that the job
          has been processed