Forker¶
- class torchdata.datapipes.iter.Forker(datapipe: IterDataPipe, num_instances: int, buffer_size: int = 1000, copy: Optional[Literal['shallow', 'deep']] = None)¶
创建同一 Iterable DataPipe 的多个实例(函数名称:
fork
)。- 参数:
datapipe – 正在复制的 Iterable DataPipe
num_instances – 要创建的 datapipe 实例数
buffer_size – 这限制了领先的子 DataPipe 相对于最慢的子 DataPipe 可以读取的距离。默认为
1000
。使用-1
表示无限缓冲区。copy – 用于每个分支产生的项目的复制策略。支持的选项包括
None
表示不复制,"shallow"
表示浅层对象复制,以及"deep"
表示深层对象复制。默认为None
。
注意
除非提供 copy 参数,否则分叉管道的所有分支都返回相同的对象。如果对象是可变的或包含可变对象,则在一个分支中更改它们将影响所有其他分支。
示例
>>> # xdoctest: +REQUIRES(module:torchdata) >>> from torchdata.datapipes.iter import IterableWrapper >>> source_dp = IterableWrapper(range(5)) >>> dp1, dp2 = source_dp.fork(num_instances=2) >>> list(dp1) [0, 1, 2, 3, 4] >>> list(dp2) [0, 1, 2, 3, 4]