首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代Mongoengine -如何防止大内存消耗

迭代Mongoengine -如何防止大内存消耗
EN

Stack Overflow用户
提问于 2022-06-08 13:33:58
回答 1查看 58关注 0票数 0

在我的部署环境中,我试图使用类似于下面的循环运行一个脚本。但是,脚本会因为占用太多内存而被删除。当我检查循环的内存消耗时,我注意到在循环的每一次迭代中,消耗增加了1-2MB。

有人能告诉我消费增长的原因是什么吗?我怎样才能阻止消费增长?

代码语言:javascript
复制
import tracemalloc

from mongoengine_models import SomeModel

tracemalloc.start()
for count, rel in enumerate(SomeModel.objects.filter(some_attr="some_value")):
    current, peak = tracemalloc.get_traced_memory()
    current_mb = current / 10**6
    peak_mb = peak / 10**6
    print(f"Current memory usage is {current_mb}MB; Peak was {peak_mb}MB")
    print(count, rel.some_other_attr_1, rel.some_other_attr_2)
tracemalloc.stop()

更新:我发现我可以通过在每次迭代结束时执行del reldel some_other_attr_1del some_other_attr_2来防止消费的增长,因为这感觉就像一个讨厌的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 08:27:01

查询集的结果被缓存。您可以通过使用no_cache()来避免这种情况。

代码语言:javascript
复制
SomeModel.objects.no_cache().filter(some_attr="some_value")

有一篇关于no_cache here的帖子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72546644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档