如何修改对 sys.getsizeof(dict) 的调用,以便在使用 PyPy 时保留功能?
How can I rework a call to sys.getsizeof(dict) so that functionality is preserved when using PyPy?
当 运行 我的代码使用 PyPy 解释器时,我希望能够计算出我的字典占用的字节数。我事先不知道字典的键是什么,也不知道这些键的值是什么。这是我所知道的:
- 所有键都将键入
string
- 键数未知
- 所有值的类型均为
string
、int
、double
或 None
我了解,根据失败消息中提供的解释,没有 sys.getsizeof()
的直接替代方案。 ,在大多数情况下,link 以某种方式实现 sys.getsizeof()
的迭代解决方案。
字典的条目是从 JSON 文件加载的,所以它们看起来像这种格式的一些变体:
{'a': 'hello', 'b': None, 'c': 20, 'd': 20.5}
有没有一种方法可以在不使用 sys.getsizeof()
的情况下计算此对象表示的字节数?我很难通过谷歌搜索解决方案,希望能在这里获得一些见解。
这个问题在 CPython 中没有意义,在 PyPy 中更没有意义。除了共享状态的考虑之外,大小可能会根据字典中的内容以及 PyPy 是否可以对其进行优化而改变(only-int-keys 和其他人的显式策略),因此通常它不会在调用中保持不变至 sys.getsizeof
。有关详细信息,请参阅 pypy 文档的 the compatibility page
当 运行 我的代码使用 PyPy 解释器时,我希望能够计算出我的字典占用的字节数。我事先不知道字典的键是什么,也不知道这些键的值是什么。这是我所知道的:
- 所有键都将键入
string
- 键数未知
- 所有值的类型均为
string
、int
、double
或None
我了解,根据失败消息中提供的解释,没有 sys.getsizeof()
的直接替代方案。 sys.getsizeof()
的迭代解决方案。
字典的条目是从 JSON 文件加载的,所以它们看起来像这种格式的一些变体:
{'a': 'hello', 'b': None, 'c': 20, 'd': 20.5}
有没有一种方法可以在不使用 sys.getsizeof()
的情况下计算此对象表示的字节数?我很难通过谷歌搜索解决方案,希望能在这里获得一些见解。
这个问题在 CPython 中没有意义,在 PyPy 中更没有意义。除了共享状态的考虑之外,大小可能会根据字典中的内容以及 PyPy 是否可以对其进行优化而改变(only-int-keys 和其他人的显式策略),因此通常它不会在调用中保持不变至 sys.getsizeof
。有关详细信息,请参阅 pypy 文档的 the compatibility page