场景
本意是想利用try-except的特性,当读取文件出错时,自动选择另一种方式进行读取,以用于多类型文件读取
问题描述
在训练模型时,使用try-except语句读文件时出现内存泄露,随着dataloader的读取,内存直线上升。
代码:
try:
obj = itk.imread(name)
obj = itk.array_view_from_image(obj, keep_axes=False)
except:
obj = io.imread(name)
原因分析:
itk 没有安装,但是由于捕获了异常但是却没有输出,所以代码可以继续运行,并且由于使用堆内存后,不会try-except后不会释放变量,因此会使得内存占用一直增加。
解决方案:
使用这种方式时,尽量输出异常,防止觉得自己写的代码很完美,运行出来却很懵逼
try:
obj = itk.imread(name)
obj = itk.array_view_from_image(obj, keep_axes=False)
except Exception as e:
obj = io.imread(name)
print(e)