code: def run(self):
      import hashlib
  
      with open(self.fname, "rb") as handle:
          fileno = handle.fileno()
  
          while True:
              query = self.queries.get()
              # No more work
              if query is None:
                  break
  
              page_number, slot = query
              offset = np.uint64(page_number * self.page_size)
              length = read(fileno, self.memory[slot], offset)
              # print("L", page_number, slot, hashlib.md5(self.memory[slot]).hexdigest(), self.memory[slot].ctypes.data, length)
              self.loaded.put(page_number)
  
file_path: ffcv/ffcv/memory_managers/process_cache/page_reader.py
imports: from threading import Thread
  from queue import Queue
  import numpy
  from ...libffcv import read
label_desc: Use image node_id 2 for calling the PageReader obj's underlying member method code with example usage: obj.run() without return types