我正在尝试为我的django应用程序使用sorl-thumbnail为每个大约40k个图像批量生成4个thumnail。我使用ImageWithThumbnailsFieldFile迭代所有django对象,然后调用其generate_thumbnails()函数。在
这一切都很好,只是在几百次迭代之后,内存耗尽,循环崩溃,出现“内存错误”。由于sorl thumbnail使用PIL来生成thumbs,因此PIL似乎没有返回在生成thumb时使用的所有内存。在
有没有人可以避免这个问题,例如通过强迫PIL返回它不再需要的内存?在
我的代码如下所示:
all = Picture.objects.all()
for i in all:
i.image.generate_thumbnails()
函数generate thumbnail从here,第129行开始。在
提前谢谢你的建议!在
马丁
您的问题与Django如何在循环查询集的结果时缓存它们有关。Django将所有对象保存在内存中,以便下次迭代相同的查询集时,不必再次访问数据库来获取所有数据。在
您需要做的是使用iterator()方法。所以:
相关问题 更多 >
编程相关推荐