Spec-Zone.ru › Python 3.12

Поддержка карт 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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/perfmaps.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API