code: def lock_file(f, block=False):
      
      try:
          flags = fcntl.LOCK_EX
          if not block:
              flags |= fcntl.LOCK_NB
          fcntl.flock(f.fileno(), flags)
      except IOError as e:
          if e.errno in (errno.EACCES, errno.EAGAIN):
              raise SystemExit("ERROR: %s is locked by another process." %
                               f.name)
          raise
docs: If block=False (the default), die hard and fast if another process has
      already grabbed the lock for this file.
  
      If block=True, wait for the lock to be released, then continue.