我使用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)