如何修改对 sys.getsizeof(dict) 的调用,以便在使用 PyPy 时保留功能?

How can I rework a call to sys.getsizeof(dict) so that functionality is preserved when using PyPy?

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

我了解,根据失败消息中提供的解释,没有 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