2016-07-27 12 views
1

好奇心の念で、私は参照カウントがPythonでどのように機能するかを理解しようとしています。これらの2つのエントリ:参照カウントについてまだ混乱しています

は便利だったが、それでも疑問を提起しました。 sys.getrefcount()戻りlen(gc.get_referrers())は異なる値を使用

  1. 。例:

    >>> a = 3 
    >>> print sys.getrefcount(a) 
    38 
    >>> print len(gc.get_referrers(a)) 
    23 
    

    なぜ違いますか?

  2. 私はそれを理解したように私はそれに名前aをバインド時に3の整数値を保持するオブジェクトがすでに存在するため、aの参照カウントが非常に高いです。どのオブジェクトが3を保持しているかをPythonがどのように追跡して、名前にaをバインドし、それに応じて参照カウントをインクリメントするのですか?

答えて

0
  1. gc.get_referrersだけ返しサイクル検出GCが知っているオブジェクト。参照サイクルに含まれる可能性のないオブジェクトは、サイクル検出器で追跡する必要がないため、get_referrersリストに表示されないことがあります。 this array here
  2. static PyIntObject *small_ints[NSMALLNEGINTS + NSMALLPOSINTS]; 
    
関連する問題