code: def load_batch(self, current_batch):
      assert current_batch == self.next_batch
  
      # Start prefetching everything we are allowed to
      to_prefetch = self.schedule.can_prefetch_at[current_batch]
      for page_to_fetch in to_prefetch:
          q = (page_to_fetch, self.schedule.page_to_slot[page_to_fetch])
          self.queries.put(q)
  
      # Wait until we have all the pages we need
      to_wait_for = self.schedule.entering_at[current_batch]
      for page in to_wait_for:
          while page not in self.loaded:
              next_loaded = self.loaded_queue.get()
              self.loaded.add(next_loaded)
  
      # We enforce that we read in order otherwise our
      # assumptions are broken
      self.next_batch = current_batch + 1
  
file_path: ffcv/ffcv/memory_managers/process_cache/schedule.py
imports: from collections import defaultdict
  from dataclasses import dataclass
  from typing import Mapping
  from queue import Queue
  import numpy
  from .page_reader import PageReader
label_desc: Use image node_id 4 for calling the ScheduleExecutor obj's underlying member method code with example usage: obj.load_batch(current_batch) without return types