【发布时间】:2023-04-03 18:55:01
【问题描述】:
在早期版本的 Python 中(我不记得是哪个版本了),在任意内部字符串上调用 gc.get_referrers
可用于获取对 interned
字典的引用,然后可以查询其长度。
但这在 Python 2.7.5 中不再有效:gc.get_referrers(...)
在返回的列表中不再包含 interned
字典。
在 Python 2.7.5 中,还有其他方法可以确定实习字符串的数量吗?如果有,怎么做?
【问题讨论】:
-
你为什么在乎?你想用这种低级别的特定于版本的黑客来完成什么?哦,是的,2.7.12 是当前版本,那么为什么您需要在超过 3 年的版本上提供这种级别的详细信息?我并不是要怀有敌意,但我无法理解为什么这永远很重要。
-
(a) 我关心,因为我有兴趣了解 Python 进程的内存使用情况,这是一个额外的数据点。 (b) 我对 Python 2.7.5 很感兴趣,因为这是我们在产品中使用的版本,尽管我怀疑 Python 2.7.12 中的答案是一样的。
-
感谢您的回答。我从来没有花时间调查
interned
dict 的大小,因为我的应用程序中的(非文字)字符串总是更重要,所以确保我只有一个这些字符串的副本我消磨时间的地方。因此,我仍然很好奇你的目标是什么——如果你有你想要的信息,你会如何使用它? -
确实,我在这里要求的特定数据(实习字符串的数量)本身可能没有那么有用,但它是一个开始的地方。更有趣的是:实习字符串的总大小;
interned
字典本身的大小;从别处引用的实习字符串的数量(和大小);仅从另一个地方引用的实习字符串的数量(和大小)。总之,这些有助于回答这个问题:我们是否通过不必要地插入字符串而浪费了大量内存。 -
文档 (docs.python.org/2/library/…) 说实习字符串不是不朽的(从 2.3 开始),所以不应该有没有至少一个外部引用来保持它们活着的实习字符串。
标签:
python
string
string-interning
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何确定 Python 2.7.5 中的实习字符串数量? - Python技术站