Python recuperando memória após excluir itens em um dicionário
Eu tenho um dicionário relativamente grande em Python e gostaria de poder não apenas excluir itens dele, mas, na verdade,recuperar a memória de volta dessas exclusões no meu programa. Estou enfrentando um problema pelo qual, embora eu exclua itens do dicionário e até execute o coletor de lixo manualmente, o Python não parece estar liberando a própria memória.
Um exemplo simples disso:
>>> 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
>>>
Imagino o que está acontecendo é que, embora as entradas sejam excluídas e o coletor de lixo seja executado, o Python não avança e redimensiona o dicionário. Minha pergunta é: existe alguma maneira simples de contornar isso ou é provável que exija uma revisão mais séria sobre como eu escrevo meu programa?