哪个有更好的内存占用,ImageMagick或Pillow(PIL)?

时间:2014-06-11 09:00:09

标签: python django heroku imagemagick pillow

我们的Heroku托管的Django应用程序对用户上传到Amazon S3的图像进行了一些简单的图像处理 - 大多数调整到我们将在网站上显示的尺寸。为此,我们使用Pillow(Python Imaging Library的分支),在Celery任务中运行。

我们已经看到此操作的时间从几分之一秒变为半分钟或更长。我最好的猜测是为什么我们现在经常得到内存配额(R14)条件(仅仅因为应用程序更大),我天真地希望调整大小特别慢。

所以我正在考虑重构任务以使用外部ImageMagick进程来处理而不是内存中的PIL。我们的想法是,这将至少保证在convert进程终止时释放调整大小期间使用的内存。

所以我的问题是,这会有所帮助吗? ImageMagick的convert内存占用量是否比Pillow小?

1 个答案:

答案 0 :(得分:2)

我有类似的经历(唉,Java)可能有助于做出决定。

从Java调用ImageMagick库绑定(使用JNI)似乎是一个好主意,但结果却被吨泄漏。

我们最终转向ImageMagick的外部命令行调用 - 由于您提到的原因,它可以更好地工作 - 保证内存的释放。