Python中更多不必要的变量是否意味着更多的内存使用?

时间:2018-08-17 05:15:28

标签: python variables memory memory-management

假设我有一些这样的代码:

default_pos = (21,45)
#I do some more stuff now, then change my mind to change the default_pos
#So, I overwrite default_pos and assign something else to it
default_pos = (756,600)

如果不是我而是声明了一个名为default_pos_changed的新变量,而又将旧变量保留为原样,该怎么办?那将意味着不必要的变量。那么,它会不会使用比所需更多的内存?现在,如果有成百上千个这样的未使用变量,那可能是个问题,对吧?

1 个答案:

答案 0 :(得分:4)

您所说的变量实际上是对对象的引用。因此,使用像default_pos_changed这样的新变量会消耗一些内存。但是,只有用于存储引用的内存,而不是对象本身。

您可以在GitHub上查看C implementation of Python引用本质上是一个指针(和其他信息),因此它的大小大约是一个指针的大小。在64位计算机上,它为8个字节。与参考对象的尺寸相比,它很小。

修改

您可以使用del释放内存:引用被删除,并且如果对象的引用数为nul,则根据垃圾回收器规则,对象分配的内存也可以释放。

del default_pos_changed. # free the reference memory
del default_pos. # free the reference memory, the object can be garbage collected.