Comment les données de mise en commun d'éviter dans la mémoire. Lorsque itérer curseur en objet pymongo?

StackOverflow https://stackoverflow.com/questions/4502246

  •  12-10-2019
  •  | 
  •  

Question

Comment éviter la mise en commun des données en mémoire. Lorsque itérer curseur en objet pymongo?

Exemple:

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

Avant cela va dans le cycle for il y a une pause d'environ 2 moins. Il charge toutes les données en mémoire avant de commencer à itérer pour une raison quelconque. Puis-je éviter en quelque sorte il?

Si je le fais dans la coquille de MongoDB tout est ok.

Était-ce utile?

La solution

Savez-vous si cela est possible? Je ne suis pas sûr qu'il ya beaucoup que vous pouvez faire si c.db.media.find () retourne tout au lieu d'un iterator,.

Autres conseils

Regardez

à la méthode block_size du curseur. Avec elle, vous devriez être en mesure de définir à quel point vous lisez à l'avance. Je dis devrait, parce que je suis confronté à des problèmes maintenant ( Obtenir exception StopIteration sur suivant (curseur) lors de la modification batch_size dans pymongo ), mais je suis probablement fait une erreur. block_size devrait résoudre votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top