Oos*_*Oos 4 python lazy-evaluation mongodb mongoengine
我有mongoengine的内存问题(在python中).
假设我有大量的custom_documents(数千).我想要处理它们,如下所示:
for item in custom_documents.objects():
process(item)
Run Code Online (Sandbox Code Playgroud)
问题是custom_documents.objects()加载内存中的每个对象,我的应用程序使用几GB ...
我怎样才能让它更具记忆性呢?有没有办法让mongoengine懒惰地查询数据库(它在迭代查询集时请求对象)?
根据文档(根据我的经验),collection.objects返回一个懒惰QuerySet.您的第一个问题可能是您正在调用该objects属性,而不是仅将其用作可迭代的.我觉得你的应用程序使用如此多的内存肯定还有其他原因,或许process(object)以某种方式存储对它的引用?尝试以下代码并检查应用程序的内存使用情况:
queryset = custom_documents.objects
print queryset.count()
Run Code Online (Sandbox Code Playgroud)
既然QuerySets是懒惰的,你也可以做类似的事情custom_documents.limit(100).skip(500),只返回500-600的对象.
| 归档时间: |
|
| 查看次数: |
1667 次 |
| 最近记录: |