Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #89796

Re: Inner workings of this Python feature: Can a Python data structure reference itself?

Date 2015-05-02 15:17 -0500
From Tim Chase <python.list@tim.thechases.com>
Subject Re: Inner workings of this Python feature: Can a Python data structure reference itself?
References <387ac520-9da3-411a-a3b8-b326e1e8a2c0@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.26.1430597813.12865.python-list@python.org> (permalink)

Show all headers | View raw


[dangit, had Control down when I hit <enter> and it sent prematurely]

On 2015-05-02 13:02, vasudevram wrote:
> http://jugad2.blogspot.in/2015/05/can-python-data-structure-reference.html
>
> https://docs.python.org/2/reference/datamodel.html
>
> and saw this excerpt:
> 
> [ CPython implementation detail: CPython currently uses a
> reference-counting scheme with (optional) delayed
> detection of cyclically linked garbage, which collects
> most objects as soon as they become unreachable, but is
> not guaranteed to collect garbage containing circular
> references. ]
> 
> Not sure whether it is relevant to the topic at hand,
> since, on the one hand, it uses the words "cyclically
> linked", but on the other, it says "garbage collection".

The gotcha happens in a case where you do something like this:

  lst = []
  lst.append(lst)  # create a cycle
  del lst

This creates a cycle, then makes it unreachable, but the list is
still referenced by itself, so the reference count never drops to
zero (where it would get GC'd), and thus that item lingers around in
memory.

If you know that you're creating such cyclical structures, it's best
to manually unlink them before freeing them:

  lst = []
  lst.append(lst) # create the cycle
  lst[:] = []   # break the cycle
  # or lst.remove(lst) # though this takes more care
  del lst

-tkc



Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Inner workings of this Python feature: Can a Python data structure reference itself? vasudevram <vasudevram@gmail.com> - 2015-05-02 13:02 -0700
  Re: Inner workings of this Python feature: Can a Python data structure reference itself? Tim Chase <python.list@tim.thechases.com> - 2015-05-02 15:17 -0500
    Re: Inner workings of this Python feature: Can a Python data structure reference itself? vasudevram <vasudevram@gmail.com> - 2015-05-02 14:07 -0700
    Re: Inner workings of this Python feature: Can a Python data structure reference itself? Cecil Westerhof <Cecil@decebal.nl> - 2015-05-02 23:06 +0200
      Re: Inner workings of this Python feature: Can a Python data structure reference itself? MRAB <python@mrabarnett.plus.com> - 2015-05-03 00:07 +0100
      Re: Inner workings of this Python feature: Can a Python data structure reference itself? Tim Chase <python.list@tim.thechases.com> - 2015-05-02 20:57 -0500
      Re: Inner workings of this Python feature: Can a Python data structure reference itself? Ian Kelly <ian.g.kelly@gmail.com> - 2015-05-02 22:29 -0600
  Re: Inner workings of this Python feature: Can a Python data structure reference itself? Tim Chase <python.list@tim.thechases.com> - 2015-05-02 15:10 -0500
  Re: Inner workings of this Python feature: Can a Python data structure reference itself? Terry Reedy <tjreedy@udel.edu> - 2015-05-02 19:17 -0400
    Re: Inner workings of this Python feature: Can a Python data structure reference itself? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-05-03 21:10 +1000
    Re: Inner workings of this Python feature: Can a Python data structure reference itself? vasudevram <vasudevram@gmail.com> - 2015-05-03 05:59 -0700
      Re: Inner workings of this Python feature: Can a Python data structure reference itself? vasudevram <vasudevram@gmail.com> - 2015-05-03 06:05 -0700
      Re: Inner workings of this Python feature: Can a Python data structure reference itself? Chris Angelico <rosuav@gmail.com> - 2015-05-03 23:08 +1000
        Re: Inner workings of this Python feature: Can a Python data structure reference itself? vasudevram <vasudevram@gmail.com> - 2015-05-03 08:46 -0700
  Re: Inner workings of this Python feature: Can a Python data structure reference itself? Ian Kelly <ian.g.kelly@gmail.com> - 2015-05-02 22:43 -0600
  Re: Inner workings of this Python feature: Can a Python data structure reference itself? Chris Angelico <rosuav@gmail.com> - 2015-05-03 15:46 +1000
  Re: Inner workings of this Python feature: Can a Python data structure reference itself? vasudevram <vasudevram@gmail.com> - 2015-05-03 03:52 -0700

csiph-web