Django/Python/PIL/比-缩略产生于大容量存储器的错误
-
05-07-2019 - |
题
我正在尝试散产生4thumnails为每周40k图像 比-缩略 我django应用程序。我迭代通过的所有决对象的一个ImageWithThumbnailsFieldFile,然后叫它generate_thumbnails()function.
这个工作很好,只是经过几百次迭代,我跑出来的记忆和我的循环崩溃的记忆错误'。由于比-使用的缩略PIL产生的大拇指,它似乎是,PIL不返回你所有的记忆使用时产生的一个大拇指。
没有任何人如何避免这种问题,例如通过迫使PIL的返回的记忆就不再需要?
我的代码只是看起来是这样的:
all = Picture.objects.all()
for i in all:
i.image.generate_thumbnails()
功能产生-缩开始 在这里,, 线129.
预先感谢任何意见!
马丁
解决方案
你的问题涉及如何Django缓存的结果查询集你的循环,通过他们。Django保留所有对象的存在,以便下一次迭代过同样的查询集你没有击中的数据库再次获得所有数据。
什么你需要做的就是用的 迭代() 法。所以:
all = Picture.objects.all().iterator()
for i in all:
i.image.generate_thumbnails()
不隶属于 StackOverflow