Frage

Wie vermeiden Daten im Speicher-Pooling. Wenn Iterierte Cursor-Objekt in pymongo?

Beispiel:

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

Bevor es im Zyklus for geht, ist es Pause etwa 2 minus. Er lädt alle Daten im Speicher vor Iterierte aus irgendeinem Grunde starten. Kann ich es irgendwie vermeiden?

Wenn ich es in mongodb Shell tue alles in Ordnung ist.

War es hilfreich?

Lösung

Möchten Sie wissen, ob dies möglich ist? Wenn c.db.media.find () alles anstelle eines Iterators zurück, ich bin nicht sicher, es gibt viel Sie tun können.

Andere Tipps

Schauen Sie sich block_size Methode des Cursors. Damit sollten Sie in der Lage sein, zu bestimmen, wie viel Sie im Voraus lesen. Ich soll sagen, weil ich einige Probleme mit ihm jetzt mit Blick auf ( Getting StopIteration Ausnahme auf dem nächsten (Cursor) als modifizierende batch_size in pymongo ), aber ich bin wahrscheinlich einige Fehler. block_size sollte Ihr Problem lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top