据我所知,sys.getrefcount()返回一个对象,在以下的情况下,其中“应该” 1的引用的数目:
import sys,numpy
a = numpy.array([1.2,3.4])
print sys.getrefcount(a)
然而,这竟然是2! 所以,如果我:
del a
请问“numpy.array([1.2,3.4])”对象仍然存在(没有垃圾收集)?
据我所知,sys.getrefcount()返回一个对象,在以下的情况下,其中“应该” 1的引用的数目:
import sys,numpy
a = numpy.array([1.2,3.4])
print sys.getrefcount(a)
然而,这竟然是2! 所以,如果我:
del a
请问“numpy.array([1.2,3.4])”对象仍然存在(没有垃圾收集)?
当你调用getrefcount()
参考由值到函数的参数复制,暂时撞到了对象的引用计数。 这是其中第二参考来自。
这是在说明文档 :
返回的计数是一个普遍高于你所期望的,因为它包含了(临时)引用作为参数传递给
getrefcount().
关于你提到的第二个问题:
如果我“删除了”,将“numpy.array([1.2,3.4])”对象仍然存在(没有垃圾收集)?
由时间getrefcount()
退出时,所述阵列的引用计数将要回1,以及随后的del a
将释放存储器。