电脑有10核20线程应该怎么设置torch.utils.data.DataLoader 中 num_workers使得我数据加载最快?
官方指导
pytorch 官方解释为子进程(subprocesses)的数量
num_workers (int, optional) – how many subprocesses to use for data loading. 0 means that the data will be loaded in the main process. (default: 0)
参考
这里我们就需要搞定几个定义:核心数,线程数和进程
核心数,线程数和进程
核心:一个CPU具有的物理核心数(物理概念)
线程(thread):是CPU调度和分配的基本单位(逻辑概念)。
一个计算机可以并发(同时)的线程数,等于计算机上的逻辑处理器的个数(CPU个数 *每个CPU核心数 *每个内核线程数)
进程(process):是操作系统(OS)进行资源(CPU、内存、磁盘、IO、带宽等)分配的最小单位;
进程和线程的关系
另一个博客中的介绍:
进程可以简单理解为一个容器,有自己独立的地址空间,其内部的各个线程共享该地址空间。
其实严格讲应该是线程能够获得CPU资源,进程对CPU资源的获取也是体现在线程上的。至于CPU内核数,和进程线程没直接关系。操作系统(OS)可以把某个进程部署在某个CPU核上,当然这要取决于系统设计。
线程是CPU调度和