BLUELOVETH c624833cfb
Add more gc control to improve performance (#510)
* add more gc control

* fix

* Update gc.c

* Update ceval.c

* [no ci] Update 711_gc.py
2026-04-29 13:55:41 +08:00

41 lines
1.2 KiB
Python

from typing import Callable, Literal
def isenabled() -> bool:
"""Check if automatic garbage collection is enabled."""
def enable() -> None:
"""Enable automatic garbage collection."""
def disable() -> None:
"""Disable automatic garbage collection."""
def collect() -> int:
"""Run a full collection immediately.
Returns an integer indicating the number of unreachable objects found.
"""
def collect_hint() -> int:
"""Hint the garbage collector to run a collection.
The typical usage scenario for this function is in frame-driven games,
where `gc.disable()` is called at the start of the game,
and `gc.collect_hint()` is called at the end of each frame.
"""
def setup_debug_callback(cb: Callable[[Literal['start', 'stop'], str], None] | None) -> None:
"""Setup a callback that will be triggered at the end of each collection."""
def is_tracked(obj: object) -> bool:
"""Return true if the object is tracked recursively."""
def track(obj: object) -> None:
"""Start tracking this object recursively."""
def untrack(obj: object) -> None:
"""Stop tracking this object recursively.
This improves performance for container objects with value types like `list[int]`.
"""