Python beansprucht Speicher nach dem Löschen von Elementen in einem Wörterbuch wieder.

Ich habe ein relativ großes Wörterbuch in Python und möchte nicht nur Elemente daraus löschen können, sondern tatsächlich reclaim die Erinnerung von diesen Löschungen in meinem Programm zurück. Ich stoße auf ein Problem, bei dem ich zwar Elemente aus dem Wörterbuch lösche und sogar den Garbage Collector manuell ausführe, Python jedoch anscheinend nicht den Speicher selbst freigibt.

Ein einfaches Beispiel dafür:

>>> tupdict = {}
# consumes around 2 GB of memory
>>> for i in xrange(12500000):
...   tupdict[i] = (i,i)
... 
# delete over half the entries, no drop in consumed memory
>>> for i in xrange(7500000):
...   del tupdict[i]
... 
>>> import gc
# manually garbage collect, still no drop in consumed memory after this
>>> gc.collect()
0
>>> 

Ich stelle mir vor, dass Python die Größe des Wörterbuchs nicht ändert, obwohl die Einträge gelöscht werden und der Garbage Collector ausgeführt wird. Meine Frage ist, ob es einen einfachen Weg gibt, oder ob ich ernsthafter darüber nachdenken muss, wie ich mein Programm schreibe.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage