Поддержка карт perf
На поддерживаемых платформах (на момент написания документа — только Linux) среда выполнения может использовать файлы карт perf, чтобы сделать функции Python видимыми для внешнего инструмента профилирования (например, perf). Запущенный процесс может создать файл в каталоге /tmp, содержащий записи, которые позволяют сопоставить участок исполняемого кода с именем. Этот интерфейс описан в документации инструмента Linux Perf.
В Python эти вспомогательные API могут использовать библиотеки и функциональные возможности, которым требуется генерировать машинный код на лету.
Для использования этих API не требуется удерживать глобальную блокировку интерпретатора (GIL).
-
int PyUnstable_PerfMapState_Init(void) -
Это нестабильный API. Он может измениться без предупреждения в минорных выпусках.
Открывает файл
/tmp/perf-$pid.map, если он ещё не открыт, и создаёт блокировку, чтобы обеспечить потокобезопасную запись в файл (при условии, что запись выполняется с помощьюPyUnstable_WritePerfMapEntry()). Обычно вызывать эту функцию явно не нужно: достаточно использоватьPyUnstable_WritePerfMapEntry(), и при первом вызове она инициализирует состояние.Возвращает
0в случае успеха,-1, если не удалось создать или открыть файл карты perf, или-2, если не удалось создать блокировку. Проверьтеerrno, чтобы узнать причину сбоя.
-
int PyUnstable_WritePerfMapEntry(const void *code_addr, unsigned int code_size, const char *entry_name) -
Это нестабильный API. Он может измениться без предупреждения в минорных выпусках.
Записывает одну запись в файл
/tmp/perf-$pid.map. Эта функция потокобезопасна. Пример записи:# address size name 7f3529fcf759 b py::bar:/run/t.py
Перед записью вызовет
PyUnstable_PerfMapState_Init(), если файл карты perf ещё не открыт. Возвращает0в случае успеха или те же коды ошибок, что иPyUnstable_PerfMapState_Init(), в случае сбоя.
-
void PyUnstable_PerfMapState_Fini(void) -
Это нестабильный API. Он может измениться без предупреждения в минорных выпусках.
Закрывает файл карты perf, открытый функцией
PyUnstable_PerfMapState_Init(). Эта функция вызывается самой средой выполнения при завершении работы интерпретатора. Как правило, нет причин вызывать её явно, за исключением особых случаев, например при создании процесса с помощью fork.
© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/perfmaps.html