メモリ内のデータのプールを避ける方法。 PymongoでCursorオブジェクトを繰り返すときは?
質問
メモリ内のデータのプールを避ける方法。 PymongoでCursorオブジェクトを繰り返すときは?
例:
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()がイテレーターの代わりにすべてを返す場合、できることがたくさんあるかどうかはわかりません。
他のヒント
Cursorのblock_sizeメソッドを見てください。それにより、事前に読んだ金額を設定できるはずです。私は今それでいくつかの問題に直面しているので、私は言うべきです(私は今それでいくつかの問題に直面しています(Pymongoでbatch_sizeを変更するときに、next(cursor)で停止例外を取得する)、しかし、私はおそらくいくつかの間違いを犯しています。 block_sizeは問題を解決する必要があります。
所属していません StackOverflow