class_docstr: Implements a collection of iterators over a shared data stream.
class_docstr_tok: ["Implements","a","collection","of","iterators","over","a","shared","data","stream","."]
code: def __init__(
      self,
      base_dataset: "Dataset",
      coord_actor: ray.actor.ActorHandle,
      output_split_idx: int,
      world_size: int,
  ):
      self._base_dataset = base_dataset
      self._coord_actor = coord_actor
      self._output_split_idx = output_split_idx
      self._world_size = world_size
      self._iter_stats = DatasetStats(metadata={}, parent=None)
  
imports: import copy
  import logging
  import threading
  import time
  from dataclasses import replace
  from typing import TYPE_CHECKING, Dict, Iterator, List, Optional, Tuple, Union
  import ray
  from ray.data._internal.execution.interfaces import NodeIdStr, RefBundle
  from ray.data._internal.execution.legacy_compat import execute_to_legacy_bundle_iterator
  from ray.data._internal.execution.operators.output_splitter import OutputSplitter
  from ray.data._internal.execution.streaming_executor import StreamingExecutor
  from ray.data._internal.stats import DatasetStats, DatasetStatsSummary
  from ray.data._internal.util import create_dataset_tag
  from ray.data.block import Block, BlockMetadata
  from ray.data.iterator import DataIterator
  from ray.types import ObjectRef
  from ray.util.debug import log_once
  from ray.util.scheduling_strategies import NodeAffinitySchedulingStrategy
label_desc: Use image node_id 2 to create a new StreamSplitDataIterator object from inherited base classes: DataIterator with example: obj = StreamSplitDataIterator(base_dataset, coord_actor, output_split_idx, world_size)