Manually prompting garbage collection
Fredrik Lundh
fredrik at pythonware.com
Wed Jul 16 20:24:25 EDT 2008
Kyle Lanclos wrote:
> The DECREF decrements the reference count, but does not immediately prompt
> garbage collection when the reference count drops to zero; that garbage
> collection does not appear to occur until I return from the particular C
> function I am in the middle of executing.
Yeah, but what do you expect that garbage collection pass to result in?
What objects do you want to get rid of? Do these objects have direct
references to a resource that you're explicitly destroying from your C
code? Why?
> Ideally, I want to explicitly prompt garbage collection in the middle
> of a C function, without first returning to the larger Python
> interpreter.
PyGC_Collect() does exactly that, so if that doesn't solve your problem,
the only way to fix is this is to go back to the drawing board (and even
if it would fix this, it's a good idea to get back to the drawing board
anyway; Python's not C++, and code that relies on destructors to fire in
a specific order, or before a specific event, is bound to fail sooner or
later.)
</F>
More information about the Python-list
mailing list