約 800K の画像を含む大きな lmdb があります。エントリを1つずつ読みたいだけです。私のコードは非常に単純で、次のようになります。
with env.begin() as txn:
cursor = txn.cursor()
for key, value in cursor:
print(key)
しかし、約 70000 のエントリを読み取った後、メモリ (~10GB) が不足します。理由がわかりません。以下のようにしようとしましたが、うまくいきませんでした。
for r in range(0,env.stat()['entries']):
if r%10000==0:
if r!=0:
txn.commit()
cur.close()
txn=env.begin()
cur = txn.cursor()
print("Change Change Change "+ str(r))
sys.stdout.flush()
if r==0:
cur.first()
else:
cur.set_range(key)
cur.next()
key, value = cur.item()
なにか提案を?