ipython和引用计数

时间:2011-05-16 15:44:17

标签: python memory-leaks ipython reference-counting

当我不期待它时,ipython可能会保留对对象的引用。

考虑以下脚本(grc.py):

import sys
obj = []
print sys.getrefcount(obj)

当我在ipython中运行时:

Python 2.7.1 |EPD 7.0-2 (64-bit)| (r271:86832, Nov 29 2010, 13:51:37)

In [1]: %run grc.py
2

In [2]: print sys.getrefcount(obj)
4

发生了什么事?额外的两个引用来自哪里?

1 个答案:

答案 0 :(得分:3)

是的,IPython确实维护了对幕后对象的引用。特别是使用%run会在处理模块的机器中留下引用。

我们正在开发版本中进行处理(希望很快就会变成0.11) - 有关详细信息,请参阅this issue。参考文献仍然存在,但是有一些方法可以摆脱它们(%reset清除它们,或%xdel obj一个清除它们。