py-spy ist ein Sampling-Profiler für Python. Die Performance von Python-Code lässt sich ohne Instrumentation untersuchen – auch für bereits laufende Prozesse Dies funktioniert auch für eingebettete Python-Interpreter; sogar, wenn der Code des Host-Programms nicht vorliegt.
py-spy ist in Rust geschrieben und ist inspiriert von dem ebenfalls in Rust geschriebenen Sampling-Profiler rbspy für Ruby, von Julia Evans.
py-spy kann mit pip install py-spy
oder mit cargo install py-spy
installiert werden.
py-spy top
gibt die aktuelle Auslastung aus, ähnlich zu top.py-spy record
generiert Flamegraphs als aufklappbare SVG-Dateien.py-spy dump
gibt den Callstack aller Threads aus. Im Falle eines Deadlocks lässt sich somit die Ursache verstehen.--native
untersucht py-spy auch den Code nativer Python-Module. Dies ist am sinnvollsten,
wenn die Kompilate Debug-Symbole enthalten.