Dataset中使用多进程的问题
2020-01-09 本文已影响0人
SSRSGJYD
为了加快读取数据的速度,可以使用torch.multiprocess创建多个进程。但是如果直接这样做,运行时就会产生以下错误:
AssertionError: daemonic processes are not allowed to have children
这是因为torch.utils.data.Dataloader中默认设置worker为守护进程,而Python不允许守护进程创建子进程。
解决方案:查到对应PyTorch版本的源码,复制其中的torch.utils.data.Dataloader代码,然后修改Dataloader类的__init__
函数中创建子进程的部分,将w.daemon = True
修改为w.daemon = False
。之后使用这个自定义的Dataloader文件即可。