dataloader卡住!!!

前言

感谢这篇博客:http://blog.ziyouman.cn/?id=75,总结了全部的可能。
在这里插入图片描述

原因

我这里的情况是第一种,真的写的时候没注意到这个问题…
我的情况的大概是这样,我定义的dataloader是Iterloader,所以在每次新的epoch前会调用dataloader.new_epoch(),问题就出在这里了,调用new_epoch函数后马上再遍历dataloader,调用dataloader.next(),简单说就基本相当于我连续执行了这两行代码:

dataloader.new_epoch()
dataloader.next()

这就是上图解决方案中的第一种情况,前一个进程没处理完又来一个进程导致了互锁。解决方案就很简单:

dataloader.new_epoch()
time.sleep(1)
dataloader.next()

加一行sleep就好了…真的感谢上面的老哥,暴力解决的办法也有,直接设置workers=0确实可以,但是真的很慢…珍惜生命,快速炼丹!!!

所以我说为啥每次在一个新的epoch前就会突然卡住,原来如此!!!

Guess you like

Origin blog.csdn.net/qq_37668436/article/details/120539916