当pdf文件有很多图像时,getPixmap会导致内存泄漏
trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate) for pg in range(doc.page_count): page = doc[pg] pm = page.get_pixmap(matrix=trans, alpha=False)
这是因为MuPDF故意将内容保留在内存中-达到某些提供的限制,并且-对于图像-即使在文档关闭之后也是如此。
因此,内存占用的实际场景不仅必须关闭文档,而且必须在内存增量之前强制释放该MuPDF缓冲区。
import gc import fitz # 使用MuPDF提供的工具 try: TOOLS = fitz.TOOLS except: TOOLS = fitz.Tools() doc = fitz.open(file_url) trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate) for pg in range(doc.page_count): page = doc[pg] pm = page.get_pixmap(matrix=trans, alpha=False) pm.save(outfile) # 内存回收,避免内存泄漏 doc.close() TOOLS.store_shrink(100) # reset MuPDF global context gc.collect()
这与就可以避免内存泄漏了