mirror of
https://github.com/python/cpython.git
synced 2025-08-01 07:33:08 +00:00
bpo-28254: Add a C-API for controlling the GC state (GH-25687)
Add new C-API functions to control the state of the garbage collector: PyGC_Enable(), PyGC_Disable(), PyGC_IsEnabled(), corresponding to the functions in the gc module. Co-authored-by: Pablo Galindo <Pablogsal@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
baecfbd849
commit
3cc481b9de
7 changed files with 152 additions and 7 deletions
|
@ -173,3 +173,46 @@ if the object is immutable.
|
|||
this method (don't just call :c:func:`Py_DECREF` on a reference). The
|
||||
collector will call this method if it detects that this object is involved
|
||||
in a reference cycle.
|
||||
|
||||
|
||||
Controlling the Garbage Collector State
|
||||
---------------------------------------
|
||||
|
||||
The C-API provides the following functions for controlling
|
||||
garbage collection runs.
|
||||
|
||||
.. c:function:: Py_ssize_t PyGC_Collect(void)
|
||||
|
||||
Perform a full garbage collection, if the garbage collector is enabled.
|
||||
(Note that :func:`gc.collect` runs it unconditionally.)
|
||||
|
||||
Returns the number of collected + unreachable objects which cannot
|
||||
be collected.
|
||||
If the garbage collector is disabled or already collecting,
|
||||
returns ``0`` immediately.
|
||||
Errors during garbage collection are passed to :data:`sys.unraisablehook`.
|
||||
This function does not raise exceptions.
|
||||
|
||||
|
||||
.. c:function:: int PyGC_Enable(void)
|
||||
|
||||
Enable the garbage collector: similar to :func:`gc.enable`.
|
||||
Returns the previous state, 0 for disabled and 1 for enabled.
|
||||
|
||||
.. versionadded:: 3.10
|
||||
|
||||
|
||||
.. c:function:: int PyGC_Disable(void)
|
||||
|
||||
Disable the garbage collector: similar to :func:`gc.disable`.
|
||||
Returns the previous state, 0 for disabled and 1 for enabled.
|
||||
|
||||
.. versionadded:: 3.10
|
||||
|
||||
|
||||
.. c:function:: int PyGC_IsEnabled(void)
|
||||
|
||||
Query the state of the garbage collector: similar to :func:`gc.isenabled`.
|
||||
Returns the current state, 0 for disabled and 1 for enabled.
|
||||
|
||||
.. versionadded:: 3.10
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue