我有一个Python2.7应用程序,它使用了大量的dict
对象,这些对象大多包含键和值的字符串。
有时,这些听写和字符串不再需要了,我想把它们从内存中删除。
我尝试了不同的方法,del dict[key]
,del dict
等等,但是应用程序仍然使用相同的内存量。
下面是一个例子,我希望它能为我的记忆收费。但事实并非如此:
import gc
import resource
def mem():
print('Memory usage : % 2.2f MB' % round(
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024.0/1024.0,1)
)
mem()
print('...creating list of dicts...')
n = 10000
l = []
for i in xrange(n):
a = 1000*'a'
b = 1000*'b'
l.append({ 'a' : a, 'b' : b })
mem()
print('...deleting list items...')
for i in xrange(n):
l.pop(0)
mem()
print('GC collected objects : %d' % gc.collect())
mem()
输出:
Memory usage : 4.30 MB
...creating list of dicts...
Memory usage : 36.70 MB
...deleting list items...
Memory usage : 36.70 MB
GC collected objects : 0
Memory usage : 36.70 MB
我希望这里能收集一些对象,释放一些内存。
我做错什么了吗?删除未使用对象的任何其他方法,或至少查找意外使用对象的位置。
Frederick Lundh explains
and Alex Martelli writes:
因此,可以使用
multiprocessing
生成子进程,执行内存占用计算,然后确保在子进程终止时释放内存:收益率
相关问题 更多 >
编程相关推荐