1. 解决方案
- num_workers设置为0 (一般解决大多数问题)
- 修改读取数据部分代码,防止多线程锁死
- dataloader存在无限循环代码(我遇到的问题)
参考博文:
- https://blog.csdn.net/qq_32526087/article/details/106350530 (pytorch锁死在dataloader(训练时卡死))
- https://zhuanlan.zhihu.com/p/366595260 (DataLoader的num_workers设置引起卡死/堵塞/报错,以及CPU数据读取加速) (推荐阅读)
2. 调试历程
2.1 网上搜索了很多方法,尝试无果,故亲自调试
发现代码卡在了如下位置(其实就是卡在了__getitem__这个函数里):
2.2 进入函数,发现一段神奇的代码
肯定是没有跳出这个无限循环导致的…
找到问题所在:别人的代码里有写while True: 和 一个break 一直没有满足break 条件
实在难受,特此记录