num_workers&线程——调试代码遇到的解决方法诡异的问题

问题

调试E2E_BirdsEyeView的main.py时,遇到一个加载数据的for循环,每次都进不去,只停在tqdm(enumerate(train_loader))中,跳转到内部函数dataloader里出不来,停在w.start位置一直加载不动。也不报错
num_workers&线程——调试代码遇到的解决方法诡异的问题_第1张图片
跳入dataloader.py的
在这里插入图片描述
转到
num_workers&线程——调试代码遇到的解决方法诡异的问题_第2张图片
当运行到w.start()后就一直是加载中,长时间不结束。

后来发现跟线程有关,代码里设置nworkers=8,但是内部函数的num_workers=0,貌似是冲突的。
num_workers&线程——调试代码遇到的解决方法诡异的问题_第3张图片
num_workers&线程——调试代码遇到的解决方法诡异的问题_第4张图片

解决

参考这篇文章
http://www.luyixian.cn/news_show_294409.aspx
把pytorch下dataloader的其中一个num_workers参数注释掉。可能是win10只有一个thread的原因。
num_workers&线程——调试代码遇到的解决方法诡异的问题_第5张图片

引用以下文章,侵删
pytorch: RuntimeError: DataLoader worker (pid(s) 27292) exited unexpectedly:http://www.luyixian.cn/news_show_294409.aspx

你可能感兴趣的:(经验)