dictionary - 如何重新调用 sys.getsizeof(dict) 以便在使用 PyPy 时保留功能?
问题描述
我希望能够在使用 PyPy 解释器运行我的代码时计算我的字典占用的字节数。我不提前知道字典的键是什么,也不知道这些键的值是什么。这是我所知道的:
- 所有键都将是类型
string
- 密钥数量未知
- 所有值都是 type
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 文档的兼容性页面
推荐阅读
- java - Opendaylight:在集成/分发代码中部署对 Netconf 源代码的更改
- java - 无法在课堂上画线
- python-3.x - 如何使用 BeautifulSoup 从特定站点提取信息
- go - 如何安装 golang-libguestfs 包?
- angular - 使用密钥访问时在控制台中获取 null
- python - 如何在 Python 中读取每行文本并将其转换为 ASCII 小数?
- java - Spring通过配置文件组合选择属性源
- jq - 尝试将键和值都传递给 jq 过滤器表达式时出错
- android - 取消 viewModelScope 并在以后重新使用它
- php - Laravel 验证 - 仅当两个条件为真时才需要