Python3 - How do I import a class from another file
Musbur
musbur at posteo.org
Wed Dec 11 09:17:14 EST 2019
Am 10.12.2019 22:33 schrieb Paul Moore:
> You do understand that the reference counting garbage collector is an
> implementation detail of the CPython implementation *only*, don't you?
I don't think that's true. Here's a sentonce from near the top of the
"gc" module documentation of Python 3:
https://docs.python.org/3/library/gc.html#module-gc
"Since the collector supplements the reference counting already used in
Python, you can disable the collector if you are sure your program does
not create reference cycles."
The way I read this is that Python automatically and immediately deletes
objects once their refcount goes to zero, and the garbage collector only
kicks in case of circular references or other obscure circumstances. The
documentation makes no reference to the specific Python implementation,
so I believe this is true for CPython as well as others.
To be specific: Within the semantics of the Python documentation,
freeing the resources used by an object by explicitly or implicitly
using "del" is not garbage collection. Python garbage collection is like
street cleaning in real life: If everybody looked after their own trash,
we wouldn't need a municipal service to do it.
When I first read about the Python garbage collector I was puzzled at
the possibility of disabling it, thinking that over time a long-running
program would fill all memory because no object's resources would ever
be freed. But that is clearly not the case. Even Instagram can live
without garbage collecton (although if you look how much garbage is on
Instagram, maybe they should re-enable it):
https://instagram-engineering.com/dismissing-python-garbage-collection-at-instagram-4dca40b29172
> The (implementation independent) language semantics makes no assertion
> about what form of garbage collection is used, and under other garbage
> collectors, there can be an indefinite delay between the last
> reference to a value being lost and the object being collected (which
> is when __del__ gets called).
Only when there are circular references. Otherwise every Python
implementation will delete objects once their refcount goes to zero,
wven when there is no garbage collection at all, see the doc.
> There is not even a guarantee that CPython will retain the reference
> counting GC in future versions.
There is no "reference counting GC" in Python. Freeing objects based on
their reference count going to zero happens independently of the GC, see
the official docs quoted above.
More information about the Python-list
mailing list