On 3/12/2014 3:34 PM, Jurko Gospodnetić wrote:

   I was wondering if someone could explain gc.get_objects() in a bit
more detail to me.

   Does it return a list of 'all objects known to Python'? Only some of
them? Which does it return? Which it does not?

This took about 10 seconds.

>>> import gc
>>> help(gc.get_objects)
Help on built-in function get_objects in module gc:

get_objects(...)
    get_objects() -> [...]

Return a list of objects tracked by the collector (excluding the list returned).
---

Now, what object does gc track? CPython answer: objects that could be involved in and kept alive by reverence cycles and therefore not deleted when not needed by reference counting alone. Object instances, numbers, and strings cannot be involved in reference cycles, as there are no user settable references. Tuples can be:

a = []
b = (a,)
a[0] = b

A tuple of, for instance, ints would not need to be tracked, but if it is, someone probably decided that the cost of checking is not worth the benefit. Details are subject to change with versions. In 3.4, gc can break cycles of objects with delete methods, whereas they previously waiting until program shutdown. Some year ago, I remember a suggestion to turn off gc while creating lots of tuples that did not need to be tracked, but I do not know if that is still useful.

--
Terry Jan Reedy


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to