import sys sys.getobjects(limit[, type])
limit - (int) - максимальное количество объектов, которое будет возвращено.type - (класс, например list, dict, str) - если указан, в результат включаются только объекты, тип которых совпадает точно с указанным.limit динамически выделенных объектов Python. Если указан параметр type, включаются только объекты указанного типа, в точности (подтипы не включаются).Функция getobjects() модуля sys существует только в том случае, если CPython был собран с использованием специального параметра --with-trace-refs. Она предназначена исключительно для отладки проблем со сборкой мусора.
Объекты из возвращённого списка небезопасно использовать. В частности, результат может включать объекты из всех интерпретаторов, которые разделяют состояние выделителя памяти (то есть интерпретаторов, созданных с PyInterpreterConfig.use_main_obmalloc, установленным в 1, или с помощью Py_NewInterpreter(), а также основного интерпретатора). Использование объектов из разных интерпретаторов может привести к краху программы или непредсказуемому поведению.
Деталь реализации CPython: Эта функция должна использоваться только для узкоспециализированных задач. Её наличие не гарантируется во всех реализациях Python.
Изменено в Python 3.14: Результат может включать объекты из других интерпретаторов.
sys.getobjects()--with-trace-refs.type - это тип (класс), например list, dict, str. Учитываются только объекты этого типа, не включая подклассы.Функция может отсутствовать. Это нормально, если Python собран без --with-trace-refs. Как проверить наличие:
import sys if hasattr(sys, 'getobjects'): # Получить до 3 объектов типа dict dicts = sys.getobjects(3, dict) print(dicts) else: print("sys.getobjects недоступна")
Примечание: в стандартных дистрибутивах Python (например: Ubuntu, Debian)
--with-trace-refsобычно не используется. Эта опция - для разработчиков CPython.
Нельзя полагаться на результат в продакшене - только для отладки.
Не используйте объекты из результата для реальной работы - они могут быть из другого интерпретатора, и доступ к ним опасен.
Не гарантируется порядок или полнота списка - он содержит лишь часть объектов на момент вызова.
--with-trace-refs включён)import sys # Проверяем, существует ли функция if not hasattr(sys, 'getobjects'): print("Ошибка: sys.getobjects недоступна. Python собран без --with-trace-refs") else: # Получить до 5 объектов любого типа objects = sys.getobjects(5) print(f"Найдено объектов: {len(objects)}") for obj in objects: print(type(obj), repr(obj)) # Получить до 3 объектов типа list lists = sys.getobjects(3, list) print(f"Списков найдено: {len(lists)}") for lst in lists: print(f" Список: {lst}")