メモリ内のデータのプールを避ける方法。 PymongoでCursorオブジェクトを繰り返すときは?

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

  •  12-10-2019
  •  | 
  •  

質問

メモリ内のデータのプールを避ける方法。 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は問題を解決する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top