预取器¶
- class torchdata.datapipes.iter.Prefetcher(source_datapipe, buffer_size: int = 10)¶
从源 DataPipe 预取元素并将其放入缓冲区(函数名:
prefetch
)。预取会提前执行此 DataPipe 之前的 DataPipe 的操作(例如,I/O,计算),并将结果存储在缓冲区中,以便后续 DataPipe 使用。除了提前准备样本外,它没有任何影响。当参数
worker_prefetch_cnt
(用于在每个工作进程中预取)或main_prefetch_cnt
(用于在主循环中预取)大于 0 时,MultiProcessingReadingService
会使用它。除了内置用例外,这对于在具有昂贵 I/O 操作的 I/O DataPipes 之后使用也很有用(例如,从远程服务器请求文件需要很长时间)。
- 参数::
source_datapipe – 预取样本的 IterDataPipe
buffer_size – 存储预取样本的缓冲区大小
示例
>>> from torchdata.datapipes.iter import IterableWrapper >>> dp = IterableWrapper(file_paths).open_files().prefetch(5)