小编fra*_*cod的帖子

如何强制Python字典缩小?

我在其他语言中经历过这种情况.现在我在Python中遇到了同样的问题.我有一个有很多CRUD动作的字典.可以假设从字典中删除元素应该减少它的内存占用.事实并非如此.一旦字典大小增加(通常加倍),它就永远不会(?)释放分配的内存.我运行了这个实验:

import random
import sys
import uuid

a= {}
for i in range(0, 100000):
    a[uuid.uuid4()] = uuid.uuid4()
    if i % 1000 == 0:
        print sys.getsizeof(a)

for i in range(0, 100000):
    e = random.choice(a.keys())
    del a[e]
    if i % 1000 == 0:
        print sys.getsizeof(a)

print len(a)
Run Code Online (Sandbox Code Playgroud)

第一个循环的最后一行是6291736.第二个循环的最后一行也是6291736如此.字典的大小是0.

那么如何解决这个问题呢?有没有办法强制释放内存?

PS:不需要随机做 - 我玩第二个循环的范围.

python dictionary garbage-collection memory-management

7
推荐指数
1
解决办法
1121
查看次数