Как избежать объединения данных в памяти. Когда итерационно -курсор объект в Pymongo?
Вопрос
Как избежать объединения данных в памяти. Когда итерационно -курсор объект в 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 должен решить вашу проблему.