2010-12-21 4 views
0

Vermeiden Sie das Poolen von Daten im Speicher. Wenn das Cursor-Objekt in Pymongo iteriert wird?Vermeiden Sie das Poolen von Daten im Speicher. Wenn das Cursor-Objekt in Pymongo iteriert wird?

Beispiel:

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

Bevor es in Zyklus geht for gibt es etwa 2 minus Pause. Es lädt alle Daten im Speicher, bevor es aus irgendeinem Grund iteriert. Kann ich es irgendwie vermeiden?

Wenn ich es in Mongodb Shell alles ist in Ordnung.

+0

Warum wickeln Sie den Cursor (der selbst iteriert werden kann) in eine Generatorfunktion? –

Antwort

0

Wissen Sie, ob das möglich ist? Wenn c.db.media.find() alles anstelle eines Iterators zurückgibt, bin ich mir nicht sicher, ob Sie viel tun können.

+1

Es gibt nicht alles zurück. Es gibt das Cursor-Objekt zurück. – Pol

Verwandte Themen