Python ImageMagick和Pill(PIL)哪种内存占用率更好?
我们的Heroku托管的Django应用程序对我们的用户上传到Amazon S3的图像进行一些简单的图像处理,主要调整到我们将在网站上显示的大小。为此,我们使用Pillow(Python映像库的分支),在芹菜任务中运行 我们已经看到这个操作的时间从几分之一秒变为半分钟或更长。我对原因的最佳猜测是,我们现在经常遇到内存配额(R14)条件(仅仅因为应用程序更大),我天真地认为这会使调整大小变得特别慢 因此,我正在考虑重构任务,以使用外部ImageMagick进程来进行处理,而不是使用内存中的PIL。我们的想法是,这至少可以保证在Python ImageMagick和Pill(PIL)哪种内存占用率更好?,python,django,heroku,imagemagick,pillow,Python,Django,Heroku,Imagemagick,Pillow,我们的Heroku托管的Django应用程序对我们的用户上传到Amazon S3的图像进行一些简单的图像处理,主要调整到我们将在网站上显示的大小。为此,我们使用Pillow(Python映像库的分支),在芹菜任务中运行 我们已经看到这个操作的时间从几分之一秒变为半分钟或更长。我对原因的最佳猜测是,我们现在经常遇到内存配额(R14)条件(仅仅因为应用程序更大),我天真地认为这会使调整大小变得特别慢 因此,我正在考虑重构任务,以使用外部ImageMagick进程来进行处理,而不是使用内存中的PIL。
convert
过程终止时释放调整大小过程中使用的内存
所以我的问题是,这会有帮助吗?ImageMagick的
convert
会比Pillow占用更少的内存吗?我也有过类似的经历(在Java中很遗憾),这可能有助于做出决定
从Java调用ImageMagick库绑定(使用JNI)似乎是个好主意,但最终导致大量内存泄漏
最后,我们转向了ImageMagick的外部命令行调用—由于您提到的原因,该调用工作得更好—可以保证内存的释放。也许将图像处理外包给第三方服务(如Uploadcare或Cloudinary)更好?