Python - 小数据池

小数据池是一种数据缓存机制,也被称为驻留机制,只针对整数、字符串和布尔值。

在 Python 中对 -5 到 256 之间的整数会被驻留在内存中,将一定规则的字符串缓存,在使用的时候内存中只会创建一个该数据的对象,保存在小数据池中,当使用的时候直接从小数据池中获取对象的内存引用,就不需要再创建一个的数据了,这样会节省更多的内存空间。

优点:能够提高整数和字符串的处理速度,省略创建对象的过程,也会节省内存空间。
缺点:在“池”中创建或者插入新的内容会花费更多的时间。

整数:-5 ~ 256 是被驻留在小数据池中,每次使用都是同一个对象。
字符串:
1.字符串的长度是 0 或 1,都会默认进行缓存;
2.字符串的长度大于 1 ,只有字符串包含字母、数字、下划线时才会被缓存;
3.用到乘法的字符串,乘数为 1 ,仅包含字母、数字、下划线时才会被缓存,如果包含其它字符,长度 <=1 时会被缓存;乘数大于 1 ,仅包含字母、数字、下划线时才会被缓存,但字符串的长度不能大于 20 ;
4.指定缓存,可以通过 sys 模块中的 intern() 函数来指定要缓存的内容。

In [1]: string1 = "ABC"                                                                                                        

In [2]: string2 = "ABC"                                                                                                        

In [3]: string1 == string2                                                                                                     
Out[3]: True

In [4]: string1 is string2		# string1 的对象有缓存,string2使用的就算string1的对象。                                                                                                     
Out[4]: True

In [5]: id(string1),id(string2)                                                                                                
Out[5]: (139827937309840, 139827937309840)

猜你喜欢

转载自blog.csdn.net/lipandeng_acb/article/details/89976916