首页 > 解决方案 > 如何重新调用 sys.getsizeof(dict) 以便在使用 PyPy 时保留功能?

问题描述

我希望能够在使用 PyPy 解释器运行我的代码时计算我的字典占用的字节数。我不提前知道字典的键是什么,也不知道这些键的值是什么。这是我所知道的:

sys.getsizeof()我了解,根据失败消息中提供的解释,没有直接的替代方案。此处提供的答案大部分都链接到sys.getsizeof()以某种方式实现的迭代解决方案。

字典的条目是从 JSON 文件加载的,因此它们看起来像这种格式的一些变体:

{'a': 'hello', 'b': None, 'c': 20, 'd': 20.5}

有没有一种方法可以在不使用的情况下计算该对象表示的字节数sys.getsizeof()?我很难在谷歌上搜索解决方案,并希望在这里获得一些见解。

标签: dictionarymemorysyspypy

解决方案


这个问题在 CPython 中没有意义,在 PyPy 中更没有意义。除了对共享状态的考虑之外,大小还可以根据字典中的内容以及 PyPy 是否可以优化它(only-int-keys 和其他的显式策略)而改变,所以通常它不会在调用中保持不变到sys.getsizeof. 有关更多信息,请参阅pypy 文档的兼容性页面


推荐阅读