code: def lock(self, timeout='default', requested_key=None):
          
          timeout = self.timeout if timeout == 'default' else timeout
          timeout = self._cleanup_timeout(timeout)
          return self.visalib.lock(self.session, constants.AccessModes.shared_lock, timeout, requested_key)[0]
docs: Establish a shared lock to the resource.
  
          :param timeout: Absolute time period (in milliseconds) that a resource
                          waits to get unlocked by the locking session before
                          returning an error. (Defaults to self.timeout)
          :param requested_key: Access key used by another session with which you
                                want your session to share a lock or None to generate
                                a new shared access key.
          :returns: A new shared access key if requested_key is None,
                    otherwise, same value as the requested_key