2014-01-10 25 views
4

因此,每当我在Python中执行任何操作时,我都会得到这个参考计数输出。例如:关闭python引用计数输出

[email protected]:~$ python 
Python 2.7.3 (default, Feb 28 2013, 20:42:30) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import django 
[40347 refs] 
>>> django.VERSION 
(1, 5, 2, 'final', 0) 
[40349 refs] 
>>> 
[40349 refs] 
[19961 refs] 
[email protected]:~$ logout 

如何关闭该功能?

+2

你有什么设置运行在解释器启动时可能会启用GC调试标志? – user2357112

+3

你是否编译过Python,并打开了一些调试标志? (*只是猜测*)。 –

+0

尝试运行:''Python -S'' –

回答

3

它看起来像我的解释器编译与debug flag。为了摆脱它,我认为你需要重新编译。

+0

我想我只是使用默认的Python安装。可能已升级它。 Python路径是'/ usr/local/bin/python';我该如何重新编译? – Sidd

+0

从源代码编译的''/ usr/local/bin/python''的气味。请参阅:http://docs.python.org/2/using/unix。html#building-python –

+0

@JamesMills将重新编译它打破当前包?我应该再次链接一些图书馆吗?特别是,我担心我的MySQL安装和其他东西。这是一个实时网站,我不想要任何停机。 – Sidd

2

Misc/SpecialBuilds.txt

Py_REF_DEBUG


打开总引用计数。这样安排外部_Py_RefTotal 持有所有引用的计数,即所有对象的ob_refcnt总和。在 调试模式的构建,这哪里是“8288”来自于

>>> 23 
23 
[8288 refs] 
>>> 

注意,如果此计数增加,当你不存储离开新对象, 有可能是泄漏。但请记住,在交互模式下,名称“_”的特殊 保留对所显示的最后结果的引用!

Py_REF_DEBUG还会在每次递减之后检查以确认引用计数没有 变为负数,并且如果它具有立即致命错误。

特别的噱头:

sys.gettotalrefcount() 
    Return current total of all refcounts. 

Py_REF_DEBUG暗示通过一些其他的调试选项。但是每个人都是正确的:不知何故或其他你有一个Python的调试版本。

0

正如@mgilson所建议的那样,您可能会安装源代码编译的Python(暗示为/usr/local/bin/python)。如果你想从源代码重新构建的Python,去下载的你后的版本最新的源代码,并按照这些粗糙说明:

tar jxvf Python-x.y.z.tar.bz2 
cd Python-x.y.z 
./configure --prefix=/usr/local \ 
      --mandir=/usr/local/man \ 
      --enable-shared \ 
      --with-threads \ 
      --enable-ipv6 \ 
      --with-dbmliborder=gdbm 
make 
make install 

参见:http://docs.python.org/2/using/unix.html#building-python