pytorch中num_worker的工作原理

DataLoader 的核心作用是 “并行加载数据”,避免训练时主进程等待数据(IO 阻塞)。num_workers 定义了专门用于数据加载的子进程数量:
 
  • num_workers=0:单进程模式(默认),数据加载和模型训练都在主进程中执行,无额外子进程,CPU 内存占用最低,但数据加载速度最慢(训练时主进程需兼顾 IO 和计算);
  • num_workers=N(N>0):创建 N 个独立的子进程,子进程专门负责:
    1. 读取数据文件(从磁盘 / 网络);
    2. 执行 Dataset.__getitem__ 中的预处理(如图片缩放、数据转换);
    3. 将处理好的数据缓存到队列,供主进程(模型训练)读取。
 
关键结论:每个子进程都会复制一份主进程的数据集相关内存(如 Dataset 实例、预处理函数中的缓存数据),这是内存占用增加的核心原因。
posted @ 2025-11-28 17:33  Picassooo  阅读(10)  评论(0)    收藏  举报