py-spy ist ein Sampling Profiler für Python. Die Performance von Python-Code lässt sich ohne Instrumentation und auch für bereits laufende Interpreter-Prozesse untersuchen. Dies funktioniert auch für eingebettete Python-Interpreter – sogar, wenn der Code des Host-Programms nicht vorliegt, weil es z.B. kommerziell ist.
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
kann py-spy auch den Code nativer Python-Module untersuchen. Dies ist am sinnvollsten,
wenn die Kompilate Debug-Symbole enthalten.