最近在学pytorch入门,在可视化自己的CIFA10数据集时,用到了iter()函数,结果出现如下错误:
BrokenPipeError: [Errno 32] Broken pipe
在调试中发现,若将num_workers参数设置为0(原本为2),则以上报错不会出现
原因在于,在windows上使用多线程时,windows子线程在开始时会先执行main模块,子进程因而又会创建新的子进程,所以可以将代码包裹进:
if __name__ == '__main__':
就解决了以上报错。
本文探讨了在PyTorch中使用多线程加载CIFA10数据集时遇到的BrokenPipeError错误,并提供了解决方案。通过调整num_workers参数和使用if __name__ == '__main__'包裹代码,避免了在Windows环境下因子线程创建额外进程导致的问题。
2414





