推荐解决方案:
- 前一进程还未处理完,又进入下一个导致互锁,在一个Epoch完了后,或者每次获取一个batch数据后停顿一下: time.sleep(0.003)
- 内存问题,使用开关:pin_memory=True/False
- 多进程导致互锁问题,减少进程数,或直接使用一个:num_workers=0/1
- 使用其他DataLoader的问题,改为: from torch.utils.data.dataloader import DataLoader
- 内存大小不够的问题:writing 8192 to /proc/sys/kernel/shmmni
- 如果脚本中同时使用了OpenCV,可能是OpenCV与Pytorch互锁的问题。
- 关闭OpenCV的多线程:
- cv2.setNumThreads(0)
- cv2.ocl.setUseOpenCL(False)
- 是否存在打开文件未关闭的问题:[openfile].close()