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

