出于好奇,我试图理解引用计数在Python中是如何工作的。这两个条目:
很有帮助,但仍然提出了问题。
使用sys.getrefcount()
会返回与len(gc.get_referrers())
不同的值。例如:
>>> a = 3
>>> print sys.getrefcount(a)
38
>>> print len(gc.get_referrers(a))
23
为何与众不同?
根据我的理解,a
上的引用计数是如此之高,因为在绑定名称{{1}时,已有一个对象保持整数值3
对它。 Python如何跟踪哪个对象持有a
以便它将名称3
绑定到它并相应地增加其引用计数?
答案 0 :(得分:0)
public function index(Request $request)
{
$tasks = $request->user()->tasks()->get();
return view('tasks', [
'tasks' => $tasks,
]);
}
仅返回循环检测GC知道的对象。不能参与参考周期的对象不需要由周期检测器跟踪,因此它们可能不会显示在gc.get_referrers
列表中。get_referrers