在复现论文的过程中遇到了数据格式不同的问题,需要自己把数据改成论文要求的格式。
自己是初学者,第一次遇到[Errno 24]Too many open files.查了很多资料,说是线程数不足的问题,实际上在我的代码中,只是数据加载不规范产生的问题。
问题的背景大概是:自己想通过np.load()批量加载npz文件(一个文件存了一个向量)并存入列表中(一个文件夹有800个npz,共70个文件夹),这时报错Too many open files.原因是打开了太多文件。查了一些资料后学习到,这种情况需要对每个文件执行load和close操作,而不能直接一次性全部暴力读取。代码片段如下:
npz_name_list = []
npz_data_list = []
for root, dirs, files in os.walk(npz_path):
for name in files:
npz_name = os.path.join(root, name) #遍历获取每个文件路径
with np.load(npz_name) as f: #加载单个npz文件
npz_data_list.append(f['feat']) #把特征矩阵存入npz_data_list这个特征列表
f.close() #关闭文件。很重要,因为不关闭会遇到文件太多无法处理的情况
npz_name_list.append(npz_name) #文件路径存入路径列表
这样解决了报错,但同时读取的速度明显慢了很多。
在复现论文过程中遇到数据格式转换问题,由于使用np.load()批量加载大量npz文件,导致[Errno24]TooManyOpenFiles错误。通过修改代码,对每个文件进行独立的加载和关闭操作,解决了问题但读取速度变慢。代码示例中展示了如何正确处理文件,避免打开过多文件。
1798

被折叠的 条评论
为什么被折叠?



