Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ImageMagick和Pill(PIL)哪种内存占用率更好?_Python_Django_Heroku_Imagemagick_Pillow - Fatal编程技术网

Python ImageMagick和Pill(PIL)哪种内存占用率更好?

Python ImageMagick和Pill(PIL)哪种内存占用率更好?,python,django,heroku,imagemagick,pillow,Python,Django,Heroku,Imagemagick,Pillow,我们的Heroku托管的Django应用程序对我们的用户上传到Amazon S3的图像进行一些简单的图像处理,主要调整到我们将在网站上显示的大小。为此,我们使用Pillow(Python映像库的分支),在芹菜任务中运行 我们已经看到这个操作的时间从几分之一秒变为半分钟或更长。我对原因的最佳猜测是,我们现在经常遇到内存配额(R14)条件(仅仅因为应用程序更大),我天真地认为这会使调整大小变得特别慢 因此,我正在考虑重构任务,以使用外部ImageMagick进程来进行处理,而不是使用内存中的PIL。

我们的Heroku托管的Django应用程序对我们的用户上传到Amazon S3的图像进行一些简单的图像处理,主要调整到我们将在网站上显示的大小。为此,我们使用Pillow(Python映像库的分支),在芹菜任务中运行

我们已经看到这个操作的时间从几分之一秒变为半分钟或更长。我对原因的最佳猜测是,我们现在经常遇到内存配额(R14)条件(仅仅因为应用程序更大),我天真地认为这会使调整大小变得特别慢

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


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

我也有过类似的经历(在Java中很遗憾),这可能有助于做出决定

从Java调用ImageMagick库绑定(使用JNI)似乎是个好主意,但最终导致大量内存泄漏


最后,我们转向了ImageMagick的外部命令行调用—由于您提到的原因,该调用工作得更好—可以保证内存的释放。

也许将图像处理外包给第三方服务(如Uploadcare或Cloudinary)更好?