0

如何避免在内存中汇集数据。在pymongo中迭代光标对象时?

例子:

def iter():
    c=pymongo.Connection()
    cursor=c.db.media.find().skip(0).limit(50000)
    for item in cursor:
        yield item

在它进入循环之前, for有大约 2 减的暂停。由于某种原因,它在开始迭代之前将所有数据加载到内存中。我能以某种方式避免它吗?

如果我在 mongodb shell 中执行此操作,则一切正常。

4

2 回答 2

0

查看游标的 block_size 方法。有了它,您应该能够提前设置阅读量。我说应该,因为我现在面临一些问题(在 pymongo 中修改 batch_size 时在 next(cursor) 上获取 StopIteration 异常),但我可能犯了一些错误。block_size 应该可以解决您的问题。

于 2014-06-02T04:15:46.147 回答
0

你知道这是否可能吗?如果 c.db.media.find() 返回所有内容而不是迭代器,我不确定你能做多少。

于 2010-12-21T18:01:28.783 回答