我在使用 mongoengine(在 python 中)时遇到内存问题。
假设我有大量的 custom_documents(几千个)。 我想像这样处理它们:
for item in custom_documents.objects():
process(item)
问题是 custom_documents.objects()
加载内存中的每个对象,我的应用程序使用几个 GB ...
我该怎样做才能使内存更明智? 有没有办法让 mongoengine 延迟查询数据库(当我们在查询集上迭代时它请求对象)?
最佳答案
根据docs (根据我的经验),collection.objects 返回一个惰性 QuerySet
。您的第一个问题可能是您正在调用 objects
属性,而不是仅仅将其用作可迭代对象。我觉得你的应用程序使用这么多内存一定有其他原因,也许 process(object)
以某种方式存储对它的引用?尝试以下代码并检查您的应用程序的内存使用情况:
queryset = custom_documents.objects
print queryset.count()
由于 QuerySets
是惰性的,您也可以执行 custom_documents.limit(100).skip(500)
之类的操作,以便仅返回对象 500-600。
关于python - 是否可以使用 mongoengine (python) 延迟查询数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841359/