最近在调试yolov3的pytorch版本的程序,过程记录在yolov3-spp结构详解、源码解析及踩坑指南(pytorch)
今天碰到了这样一个问题:在训练过程中,会突然停住(如下图),也不报错,但也不继续训练,就只是停住,仿佛时间静止了。
如果强行点个暂停,发现程序是一直在tqdm
的Tmoniter
中的run函数中,一直在执行:
if self.was_killed.is_set():
continue
此时强行终止程序,会报如下的错:
RuntimeError: DataLoader worker (pid 16923) is killed by signal: Terminated. Details are lost due to multiprocessing. Rerunning with num_workers=0 may give better error trace
根据错误的提示信息,可以知道,是dataloader多线程出了问题,因此,只要把train.py
和test.py
中的dataloader的num_workers
都设置为0即可。