今天下班在班车上想了一个关于配置表存储的小优化,起因是早上的时候发现了一个bug,这个bug是由于在运行时动态更改了一个列表配置导致的。
其实关于这种运行时“偷偷”改配置的问题我之前也有考虑过,这种应该是一不小心就会写出的,这不终于都出了一个。
至于如何预防这种问题,我认为在python里面似乎也没有什么好的解决方法,因为它不像c++有const语义,但有一个稍尽人事的预防措施就是把列表型的配置读成元组(tuple)。而由此衍生出的一个想法便是:把配置表中所有的列表型配置都读成共享的元组,即只要是其内容一致的那么内存中就只会存一份,类似于string intern。
在将这个想法付诸实践之前,有一些问题是需要搞清楚的。因为如果我想要做的,python都帮我做的七七八八了,那我就不需要在此花费无用的精力了。因此首要问题是,python的元组是否有共享机制?以及其对何种元组是会共享的?
显然不可能是所有的元组都使用共享策略,但我知道空的元组是会被共享的。
时间: 2024-10-14 23:01:51