Документация Python неофициальный перевод

Поддержка Perf MapsSupport for Perf Maps

На поддерживаемых платформах (на момент написания – только Linux) среда выполнения может использовать файлы perf map, чтобы сделать функции 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 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(). Эта функция вызывается самой средой выполнения при завершении интерпретатора. В целом, нет причин вызывать её явно, за исключением обработки особых сценариев, таких как форк.