class_docstr: A reentrant lock, functions in a similar way to threading.RLock in that it
  can be acquired multiple times.  When the corresponding number of release()
  calls are made the lock will finally release the underlying file lock.
code: def __init__(
      self,
      filename,
      mode="a",
      timeout=DEFAULT_TIMEOUT,
      check_interval=DEFAULT_CHECK_INTERVAL,
      fail_when_locked=False,
      flags=LOCK_METHOD,
  ):
      super(RLock, self).__init__(
          filename,
          mode,
          timeout,
          check_interval,
          fail_when_locked,
          flags,
      )
      self._acquire_count = 0
      self._lock = ProcessRLock()
      self._pid = os.getpid()
  
imports: import os
  import time
  import atexit
  import tempfile
  import contextlib
  from multiprocessing import RLock
  from .None import exceptions
  from .None import constants
  from .None import portalocker
label_desc: Use image node_id 1 to create a new RLock object from inherited base classes: Lock with example: obj = RLock(filename, mode, timeout, check_interval, fail_when_locked, flags)