windows *** 作系统下
在进行图片分割成小块的时候,在如下代码中出错
temp.save(label_str, 'TIFF')
错误如下:
Traceback (most recent call last):
File "D:/d/Paper/PyProjectForPaper/img.py", line 209, in
train_process(img_list[:1000], TRAIN_DATA_SAVE_PATH)
File "D:/d/Paper/PyProjectForPaper/img.py", line 154, in train_process
temp.save(label, 'TIFF')
File "D:\PyCharm\Myprojects\lib\site-packages\PIL\Image.py", line 2300, in save
save_handler(self, fp, filename)
File "D:\PyCharm\Myprojects\lib\site-packages\PIL\TiffImagePlugin.py", line 1731, in _save
_fp = os.dup(fp.fileno())
OSError: [Errno 24] Too many open files
正在找解决方案。。。
参考了Why python has limit for count of file handles? - Stack Overflow中的解决办法,作如下修改限制依旧无法解决问题。
>>>import ctypes
print("Before: {}".format(ctypes.windll.msvcrt._getmaxstdio()))
Before: 512
>>>ctypes.windll.msvcrt._setmaxstdio(2048)
print("After: {}".format(ctypes.windll.msvcrt._getmaxstdio()))
After: 2048
经过两天的奋斗……在网上找了一天半解决办法,然而都没成功过,改注册表GDIProcessHandleQuota的大小、在文件中添加close()等。
于是我仔细研究我的代码,修改了文件 open() 和 close() 的位置,于是代码终于跑了起来。然而,跑到一百多条的时候,新建文件夹的时候又报错了,还是同一个位置……也就是说问题没有得到根本解决或者说没有完全解决,但是这个思路是对的。
那么我的解决办法,就朝这个方向了,只要找到代码的文件打开的位置,然后在使用完毕后关掉就可以了。
于是我的问题就变成了,“Image.save() 打开文件后关闭仍占用问题”,解决办法来了
参考https://blog.csdn.net/qq_42679415/article/details/107774299
将
img = Image.open(image_path)
img.close()
改为如下:
fp = open(image_path,'rb')
img = Image.open(fp)
fp.close()
就可以了
可以了
以了
了
艹……
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)