class_docstr: A loader that returns a tuple of data objects by sampling from multiple
  :class:`NodeLoader` or :class:`LinkLoader` instances.
  
  Args:
      loaders (List[NodeLoader] or List[LinkLoader]): The loader instances.
      filter_per_worker (bool, optional): If set to :obj:`True`, will filter
          the returned data in each worker's subprocess.
          If set to :obj:`False`, will filter the returned data in the main
          process.
          If set to :obj:`None`, will automatically infer the decision based
          on whether data partially lives on the GPU
          (:obj:`filter_per_worker=True`) or entirely on the CPU
          (:obj:`filter_per_worker=False`).
          There exists different trade-offs for setting this option.
          Specifically, setting this option to :obj:`True` for in-memory
          datasets will move all features to shared memory, which may result
          in too many open file handles. (default: :obj:`None`)
      **kwargs (optional): Additional arguments of
          :class:`torch.utils.data.DataLoader`, such as :obj:`batch_size`,
          :obj:`shuffle`, :obj:`drop_last` or :obj:`num_workers`.
class_docstr_tok: ["A","loader","that","returns","a","tuple","of","data","objects","by","sampling","from","multiple",":","class",":","`","NodeLoader","`","or",":","class",":","`","LinkLoader","`","instances",".","Args",":","loaders","(","List","[","NodeLoader","]","or","List","[","LinkLoader","]",")",":","The","loader","instances",".","filter_per_worker","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","True","`",",","will","filter","the","returned","data","in","each","worker","'s","subprocess",".","If","set","to",":","obj",":","`","False","`",",","will","filter","the","returned","data","in","the","main","process",".","If","set","to",":","obj",":","`","None","`",",","will","automatically","infer","the","decision","based","on","whether","data","partially","lives","on","the","GPU","(",":","obj",":","`","filter_per_worker=True","`",")","or","entirely","on","the","CPU","(",":","obj",":","`","filter_per_worker=False","`",")",".","There","exists","different","trade-offs","for","setting","this","option",".","Specifically",",","setting","this","option","to",":","obj",":","`","True","`","for","in-memory","datasets","will","move","all","features","to","shared","memory",",","which","may","result","in","too","many","open","file","handles",".","(","default",":",":","obj",":","`","None","`",")","*","*","kwargs","(","optional",")",":","Additional","arguments","of",":","class",":","`","torch.utils.data.DataLoader","`",",","such","as",":","obj",":","`","batch_size","`",",",":","obj",":","`","shuffle","`",",",":","obj",":","`","drop_last","`","or",":","obj",":","`","num_workers","`","."]
code: def _get_iterator(self) -> Iterator:
      if self.filter_per_worker:
          return super()._get_iterator()
  
      # Execute `filter_fn` in the main process:
      return DataLoaderIterator(super()._get_iterator(), self.filter_fn)
  
file_path: pytorch_geometric/torch_geometric/loader/zip_loader.py
imports: from typing import Any, Iterator, List, Optional, Tuple, Union
  import torch
  from torch import Tensor
  from torch_geometric.data import Data, HeteroData
  from torch_geometric.loader import LinkLoader, NodeLoader
  from torch_geometric.loader.base import DataLoaderIterator
  from torch_geometric.loader.utils import infer_filter_per_worker
label_desc: Use image node_id 4 for calling the ZipLoader obj's underlying member method code with example usage: obj._get_iterator() and returns: DataLoaderIterator, super