Полезные инструменты для программистов — бесплатные и платные
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Регистрация в перечне РКН: https://tprg.ru/mX0S
Post #2895
1.23K
Сервис на проде внезапно ест процессор. Перезапускать с профилировщиком нельзя: проблема как раз пропадёт.
py-spy подключается к уже работающему процессу Python по идентификатору и показывает, где тот проводит время. Код менять не нужно, перезапускать тоже, сам процесс при этом продолжает работать.
🔘
🔘
🔘
🔘
🔘
🔘
🔘
Встроенный
15,2 тысячи звёзд. Язык: Rust. Лицензия: MIT.
@prog_tools
py-spy подключается к уже работающему процессу Python по идентификатору и показывает, где тот проводит время. Код менять не нужно, перезапускать тоже, сам процесс при этом продолжает работать.
🔘
py-spy top --pid 1234 — живой список горячих функций, как top, только по функциям;🔘
py-spy record -o profile.svg --pid 1234 — запись flame graph в файл;🔘
py-spy dump --pid 1234 — стеки всех потоков прямо сейчас, полезно, когда процесс завис;🔘
--locals добавляет к стекам значения локальных переменных;🔘
--subprocesses включает дочерние процессы и обработчики очередей;🔘
--native показывает и нативные расширения, а --gil отделяет время под глобальной блокировкой;🔘
--nonblocking не приостанавливает процесс ради снимка — чуть менее точно, зато безопаснее на проде.Встроенный
cProfile требует запускать программу под собой, pyinstrument — правки кода. Если нужен разбор ещё и памяти с видеокартой, смотрите в сторону Scalene, но для «зайти и посмотреть, что происходит прямо сейчас» py-spy проще.15,2 тысячи звёзд. Язык: Rust. Лицензия: MIT.
@prog_tools
- ❤ 2
- 👍 2


