code: def _worker_process(self):
          # type: (LocalFileMd5Offload) -> None
          
          while not self.terminated:
              try:
                  key, lpath, fpath, remote_md5, pagealign, lpview = \
                      self._task_queue.get(True, 0.1)
              except queue.Empty:
                  continue
              if lpview is None:
                  start = None
                  end = None
                  size = None
              else:
                  start = lpview.fd_start
                  end = lpview.fd_end
                  size = end - start
              md5 = blobxfer.operations.md5.compute_md5_for_file_asbase64(
                  fpath, pagealign, start, end)
              logger.debug('pre-transfer MD5 check: {} <L..R> {} {}'.format(
                  md5, remote_md5, fpath))
              self._done_cv.acquire()
              self._done_queue.put((key, lpath, size, md5 == remote_md5))
              self._done_cv.notify()
              self._done_cv.release()
docs: Compute MD5 for local file
          :param LocalFileMd5Offload self: this