Ich habe eine große lmdb, etwa 800K Bilder. Ich möchte nur die Einträge nacheinander lesen. Mein Code ist sehr einfach und sieht wie folgt aus:Python LMDB große DBs (Speicher-Limit-Fehler)
with env.begin() as txn:
cursor = txn.cursor()
for key, value in cursor:
print(key)
Aber nach etwa 70000 Einträge lesen aus dem Speicher läuft (~ 10 GB). Ich habe keine Ahnung warum. Ich habe versucht, wie unten zu tun, aber es hat nicht funktioniert.
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()
ein Vorschlag?
Dies ist das Fehlerprotokoll: slurmstepd: Job 1.008.515 überschritten Speichergrenze (65537464> 65536000), getötet zu werden slurmstepd: *** JOB 1008515 ON mmm269 CANCELED AT 2016-05-18T15: 09: 41 *** slurmstepd: Überschritt die Speichergrenze irgendwann. slurmstepd: Job-Limit überschritten dieser Thime ich 64 GB Ram zugeordnet, aber wieder ist es passiert. Die Gesamtgröße meiner DB ist 596 GB. – arash