Showing content from http://mail.python.org/pipermail/python-dev/attachments/20140911/f44db6df/attachment.html below:
<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hello,</div><div> Can someone explain me why gc(CPython) can not collect recursive closure's cycle reference? There is no __del__ here, why gc can not collect?</div><div> <span style="line-height: 1.7;">Thanks a lot.</span></div><div><br></div><div>For example:</div><div><div>#!/usr/bin/env python</div><div><br></div><div>import ipdb</div><div>import gc</div><div><br></div><div>gc.set_debug(gc.DEBUG_LEAK)</div><div><br></div><div>def A():</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>N = [1]</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>def aa(n):</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>if n in N:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>return 1</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>else:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>return n * aa(n-1)</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>x = 33 + aa(10)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>#ipdb.set_trace()</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>print x </div><div><br></div><div><br></div><div>if __name__ == '__main__':</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>while xrange(1000):</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>A()</div></div><div><br></div><div><br></div><br><br><br><div>--<br><div>Best</div><div> Li Tianqing</div></div></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4