什么时候不应该在Python中实习字符串



我发现了无数关于何时应该使用sys.intern()显式内化字符串的参数。我发现在不实习的时候很难找到好的论据。我感到困惑的关键是,文件中写道";内置字符串不是不朽的;您必须保留对inter((的返回值的引用才能从中受益;这消除了中间字符串的一个典型问题,即它们在使用字符串后很长一段时间就会消耗内存。这留下了极少数可能的缺点。很少有人会想到他们会被列举出来。

我发现intern唯一的缺点似乎是自洽的,那就是intern必须与全局共享的资源交互,因此甚至可能不得不进行多线程同步。但这是唯一的缺点吗?在intern()调用期间需要全局同步是唯一的缺点吗?

实习不是免费的。即使忽略了全局同步(这只是由GIL处理的(,你也会在实习上花费时间,在大多数可能的呼叫站点,你在这段时间里绝对一无所获。

实习只有在非常特殊的情况下才会有回报。只有当你在有和没有实习的情况下分析了你的代码,并且你知道,或者非常有信心,它在你的用例中确实有回报的时候,你才应该这样做。

最新更新