code: def test_call_iter_on_dataloader_multiple_times(
      synthetic_dataset, reader_factory, data_loader_type
  ):
      with data_loader_type(
          reader_factory(
              synthetic_dataset.url, schema_fields=[TestSchema.id]
          ),
          batch_size=2,
      ) as loader:
          pass1_set = set()
          for batch in iter(loader):
              pass1_set |= set(batch["id"].numpy())
          pass2_set = set()
          for batch in iter(loader):
              pass2_set |= set(batch["id"].numpy())
          assert pass1_set == pass2_set
          match_str = "You must finish a full pass of Petastorm DataLoader before making another pass from the beginning"
          with pytest.raises(RuntimeError, match=match_str):
              iter3 = iter(loader)
              next(iter3)
              iter4 = iter(loader)
              next(iter4)
  
imports: from decimal import Decimal
  from packaging import version
  import numpy
  import pyarrow
  import pytest
  import torch
  from petastorm import make_reader, TransformSpec, make_batch_reader
  from petastorm.pytorch import _sanitize_pytorch_types, DataLoader, BatchedDataLoader, decimal_friendly_collate, InMemBatchedDataLoader, _load_rows_into_mem
  from petastorm.tests.test_common import TestSchema
label_desc: Use image node_id 16 for calling a global function with example usage: test_call_iter_on_dataloader_multiple_times(synthetic_dataset, reader_factory, data_loader_type) without return types