Поддержка Perf Map
На поддерживаемых платформах (на момент написания, только Linux), среда выполнения может использовать файлы perf map, чтобы сделать функции Python видимыми для внешнего инструмента профилирования (например, perf). Запущенный процесс может создать файл в каталоге /tmp, который содержит записи, которые могут сопоставить раздел исполняемого кода с именем. Этот интерфейс описан в документации инструмента Linux Perf.
В Python эти вспомогательные API могут использоваться библиотеками и функциями, которые полагаются на динамическое генерирование машинного кода.
Обратите внимание, что получение глобальной блокировки интерпретатора (GIL) для этих API не требуется.
-
int PyUnstable_PerfMapState_Init(void) -
Это Нестабильный API. Он может измениться без предупреждения в мелких релизах.
Открыть файл
/tmp/perf-$pid.map, если он ещё не открыт, и создать блокировку для обеспечения потокобезопасных записей в файл (при условии, что записи выполняются черезPyUnstable_WritePerfMapEntry()). Обычно нет необходимости вызывать это явным образом; просто используйтеPyUnstable_WritePerfMapEntry(), и он инициализирует состояние при первом вызове.Возвращает
0при успехе,-1при неудаче создания/открытия файла perf map или-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 map ещё не открыт. Возвращает0при успехе или те же коды ошибок, что иPyUnstable_PerfMapState_Init()при ошибке.
-
void PyUnstable_PerfMapState_Fini(void) -
Это Нестабильный API. Он может измениться без предупреждения в мелких релизах.
Закрыть файл perf map, открытый функцией
PyUnstable_PerfMapState_Init(). Это вызывается самой средой выполнения во время завершения работы интерпретатора. В целом, нет причины явно вызывать эту функцию, за исключением обработки специфических сценариев, таких как виртуализация.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/perfmaps.html