Как избежать объединения данных в памяти. Когда итерационно -курсор объект в Pymongo?

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

  •  12-10-2019
  •  | 
  •  

Вопрос

Как избежать объединения данных в памяти. Когда итерационно -курсор объект в Pymongo?

Пример:

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

Прежде чем он войдет в цикл for Есть пауза около 2 минус. Он загружает все данные в памяти до начала итерации по какой -то причине. Могу я как -то избежать этого?

Если я сделаю это в оболочке MongoDB, все в порядке.

Это было полезно?

Решение

Вы знаете, возможно ли это? Если c.db.media.find () возвращает все вместо итератора, я не уверен, что вы можете многое сделать.

Другие советы

Посмотрите на метод курсора Block_size. С ним вы сможете установить, сколько вы читаете заранее. Я говорю, что должен, потому что сейчас я сталкиваюсь с некоторыми проблемами (Получение исключения остановки на следующем (курсор) при изменении batch_size в Pymongo), но я, вероятно, допускаю некоторую ошибку. block_size должен решить вашу проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top