class_docstr: Reads a dataset from a Petastorm dataset.
  
  :ivar last_row_consumed: True if the last row was already returned by the Reader.
class_docstr_tok: ["Reads","a","dataset","from","a","Petastorm","dataset",".",":","ivar","last_row_consumed",":","True","if","the","last","row","was","already","returned","by","the","Reader","."]
code: def _create_ventilator(
      self,
      row_group_indexes,
      shuffle_row_groups,
      shuffle_row_drop_partitions,
      num_epochs,
      worker_predicate,
      max_ventilation_queue_size,
      seed,
  ):
      items_to_ventilate = []
      for piece_index in row_group_indexes:
          for shuffle_row_drop_partition in range(
              shuffle_row_drop_partitions
          ):
              items_to_ventilate.append(
                  {
                      "piece_index": piece_index,
                      "worker_predicate": worker_predicate,
                      "shuffle_row_drop_partition": (
                          shuffle_row_drop_partition,
                          shuffle_row_drop_partitions,
                      ),
                  }
              )
  
      return ConcurrentVentilator(
          self._workers_pool.ventilate,
          items_to_ventilate,
          iterations=num_epochs,
          max_ventilation_queue_size=max_ventilation_queue_size,
          randomize_item_order=shuffle_row_groups,
          random_seed=seed,
      )
  
imports: import collections.abc
  import logging
  import warnings
  import six
  from pyarrow import parquet
  from petastorm.arrow_reader_worker import ArrowReaderWorker
  from petastorm.cache import NullCache
  from petastorm.errors import NoDataAvailableError
  from petastorm.etl import dataset_metadata, rowgroup_indexing
  from petastorm.etl.dataset_metadata import PetastormMetadataError, infer_or_load_unischema
  from petastorm.fs_utils import get_filesystem_and_path_or_paths, normalize_dir_url
  from petastorm.local_disk_cache import LocalDiskCache
  from petastorm.ngram import NGram
  from petastorm.predicates import PredicateBase
  from petastorm.py_dict_reader_worker import PyDictReaderWorker
  from petastorm.reader_impl.arrow_table_serializer import ArrowTableSerializer
  from petastorm.reader_impl.pickle_serializer import PickleSerializer
  from petastorm.selectors import RowGroupSelectorBase
  from petastorm.transform import transform_schema
  from petastorm.workers_pool.dummy_pool import DummyPool
  from petastorm.workers_pool.process_pool import ProcessPool
  from petastorm.workers_pool.thread_pool import ThreadPool
  from petastorm.workers_pool.ventilator import ConcurrentVentilator
label_desc: Use image node_id 9 for calling the Reader obj's underlying member method code with example usage: obj._create_ventilator(row_group_indexes, shuffle_row_groups, shuffle_row_drop_partitions, num_epochs, worker_predicate, max_ventilation_queue_size, seed) and returns: ConcurrentVentilator