c00*_*ter 14 python dictionary memory-management
当我getsizeof在sys模块中使用字典中的方法时,我有点困惑.下面我创建了一个两个字符串的简单字典.两个字符串的大小明显大于字典中的大小.字典大小可能只是字典开销,即它不考虑实际数据.找出整个字典(键,值,字典开销)的内存使用情况的最佳方法是什么?
>>> first = 'abc'*1000
>>> second = 'def'*1000
>>> my_dictionary = {'first': first, 'second': second}
>>> getsizeof(first)
3021
>>> getsizeof(second)
3021
>>> getsizeof(my_dictionary)
140
Run Code Online (Sandbox Code Playgroud)
Jac*_*cob 10
有关递归使用getsizeof()的示例,请参阅recursive sizeof recipe以查找容器及其所有内容的大小.
因此它只计算开销,但您可以使用此链接中的函数来计算像dicts这样的容器.
递归getsizeof会得到实际大小,但如果你有多层字典并且只想得到一个粗略的估计。该json来得心应手。
>>> first = 'abc'*1000
>>> second = 'def'*1000
>>> my_dictionary = {'first': first, 'second': second}
>>> getsizeof(first)
3049
>>> getsizeof(second)
3049
>>> getsizeof(my_dictionary)
288
>>> getsizeof(json.dumps(my_dictionary))
6076
>>> size = getsizeof(my_dictionary)
>>> size += sum(map(getsizeof, my_dictionary.values())) + sum(map(getsizeof, my_dictionary.keys()))
>>> size
6495
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10653 次 |
| 最近记录: |