¿Cómo evitar el agrupamiento de los datos en la memoria. Cuando iterate cursor de objeto en pymongo?

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

  •  12-10-2019
  •  | 
  •  

Pregunta

¿Cómo poner en común evitar que los datos en la memoria. Cuando iterate cursor de objeto en pymongo?

Ejemplo:

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

antes de que entre en for ciclo hay pausa aproximadamente 2 menos. Se carga todos los datos en la memoria antes de empezar a iterar por alguna razón. ¿Hay algún modo evitarlo?

Si lo hago con cáscara mongodb todo está bien.

¿Fue útil?

Solución

¿Usted sabe si esto es posible? Si c.db.media.find () devuelve todo lo que en lugar de un iterador, no estoy seguro de que hay mucho que pueda hacer.

Otros consejos

Mira método block_size del cursor. Con él usted debe ser capaz de establecer la cantidad que leer con antelación. Yo digo si, porque yo estoy frente a algunos problemas con él ahora ( Conseguir excepción StopIteration el siguiente (cursor) cuando se modifica batch_size en pymongo ), pero probablemente estoy haciendo algún error. block_size debe resolver su problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top