Multiprocessing TypeError: cannot serialize '_io.TextIOWrapper' object 的解决方法
最近在学习 EDSR 项目的时候出现 TypeError: cannot serialize ‘_io.TextIOWrapper’ object,这个问题困扰了一天,讲下大概可能的问题所在。我这里主要的原因还是因为在 iter(dataloader) 的时候开了多线程 (num_workers > 0),而在data 中传入了 ckp 这个参数,_data = data.Data(ar..
·
这个问题主要是出在了在multiprocessing中,开新的process的时候有对象是一个 _io.TextIOWrapper,而这个类很大可能是你打开了一个文件并将其赋值给了一个变量同时该文件没有关上,那么这个变量就是一个 _io.TextIOWrapper 对象,且这个对象在multiprocessing中是不能被序列化的。
解决方式是将变量 _io.TextIOWrapper 在 开新的process的时候关掉或者不共享。
更多推荐
已为社区贡献2条内容
所有评论(0)