ImageMagick和Pillow(PIL)哪个的内存占用更小?

3
我们的Heroku托管的Django应用程序对用户上传到Amazon S3的图像进行简单的图像处理,主要是调整大小以便在网站上显示。为此,我们使用Pillow(Python Imaging Library的分支版本)在Celery任务中运行。
我们已经看到这个操作的时间从几分之一秒变成了半分钟甚至更长。我的最佳猜测是,我们现在经常遇到内存配额(R14)条件(只是因为应用程序更大),我天真地认为这会使调整大小特别缓慢。
因此,我考虑重新设计任务,使用外部的ImageMagick进程来进行处理,而不是使用内存中的PIL。我的想法是,这将至少保证在convert进程终止时释放调整大小期间使用的内存。
所以,我的问题是,这样做能帮助吗? ImageMagick的convert是否比Pillow具有更小的内存占用?

也许将图像处理外包给第三方服务,如Uploadcare或Cloudinary会更好? - homm
1个回答

2
我曾经有过类似的经历(可惜是在Java中),这可能有助于做出决定。
从Java中调用ImageMagick库绑定(使用JNI)似乎是个好主意,但结果证明它会大量泄漏内存。
最后我们转向了对ImageMagick的外部命令行调用——这种方法效果更好,正如你所提到的——确保释放内存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接