我使用pyexiv2库读取图像exif信息。我发现ImageMetadata.from_buffer()方法在图像不完整时会导致内存泄漏。但是 ImageMetadata() 方法是可以的。
下面的代码是我的测试代码,当我让它从一个不是图像的文件中读取时,你会看到内存不是空闲的。
import pyexiv2
import time
import sys
import os
def read_metadata(file_data):
try:
metadata = pyexiv2.ImageMetadata(file_data)
metadata = pyexiv2.ImageMetadata.from_buffer(file_data)
metadata.read()
except Exception,e:
print e
filename = sys.argv[1]
print filename
write_metadata(open(filename).read())
time.sleep(10000)