2014-01-10 2 views
4

파이썬에서 어떤 작업을 수행 할 때마다이 카운트 출력을 계속 가져옵니다. 예 :파이썬 참조 카운팅 출력을 끕니다.

[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

http://docs.python.org/2/using/unix.html#building-python 당신은 아무것도 실행하도록 설정해야합니까 인터프리터 시작시 GC 디버그 플래그를 활성화 할 수 있습니까? – user2357112

+3

일부 디버깅 플래그가 켜져있는 상태에서 Python을 컴파일 했습니까? (* 추측 *). –

+0

다음을 실행하십시오 :''Python -S'' –

답변

3

귀하의 통역사가 debug flag으로 컴파일 된 것처럼 보입니다. 그것을 없애기 위해서, 나는 라고 생각하고을 다시 컴파일해야한다고 생각합니다. Misc/SpecialBuilds.txt에서

+0

나는 단지 디폴트 파이썬 설치를 사용하고 있다고 생각한다. 그것을 업그레이드했을 수도 있습니다. 파이썬 경로는'/ usr/local/bin/python'입니다; 어떻게 재 컴파일합니까? – Sidd

+0

''/ usr/local/bin/python''은 소스에서 컴파일 된 Python 냄새를 풍깁니다. 참조 : http://docs.python.org/2/using/unix.html # building-python –

+0

@JamesMills 현재 패키지를 다시 컴파일하면 되나요? 일부 라이브러리를 다시 연결해야합니까? 특히 MySQL 설치 및 다른 것들에 대해 걱정하고 있습니다. 이것은 라이브 웹 사이트이며 어떤 중단 시간도 원하지 않습니다. – Sidd

2

:

Py_REF_DEBUG 집계 참조 횟수에


켭니다. 이렇게하면 extern _Py_RefTotal 에 모든 참조의 수, 모든 객체의 ob_refcnt 합계가 저장됩니다. 은 "8288"이

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

주에이 수가 증가하면 새로운 객체를 멀리 저장하지 않을 때 것을에서 오는 어디 디버그 모드 빌드에,이, 아마 누수가있을 것입니다 . 하지만 대화 형 모드에서 이름 "_"은 표시된 마지막 결과에 대한 참조를 보유한다는 것을 기억하십시오!

또한 Py_REF_DEBUG는 모든 decref 이후에 reffount가 이 아닌지 확인하고,있을 경우 즉시 치명적인 오류를 발생시킵니다.

특수 비밀 :

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

Py_REF_DEBUG는 다른 디버깅 옵션으로도 암시입니다. 하지만 모두가 맞습니다 : 어떻게 든 또는 다른 사람은 파이썬의 디버그 빌드를 가지고 있습니다.

0

@mgilson에서 제안한 것처럼 소스 컴파일 된 Python이 설치되어있을 가능성이 있습니다 (힌트 : /usr/local/bin/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 

참조 :