pypprof adds HTTP-based endpoints for collecting profiles from a running Python application a la Go's net/http/pprof
.
Under the hood, it uses zprofile and mprofile to collect CPU and heap profiles with minimal overhead.
Register the profiling endpoints in your application:
from pypprof.net_http import start_pprof_server
start_pprof_server(port=8081)
Fetch a 30s CPU profile, and view as a flamegraph:
$ go tool pprof -http=:8088 :8081/debug/pprof/profile
Fetch a heap profile:
$ go tool pprof :8081/debug/pprof/heap
Dump stacks from your application:
$ curl localhost:8081/debug/pprof/thread?debug=1
pypprof is compatible with Python >= 2.7. Memory profiling is only available by default in Python >= 3.4. To enable memory profiling in earlier Pythons, you must patch Python and manually install mprofile.
Pull requests and issues are welcomed!
pypprof is released under the GNU Lesser General Public License, Version 3.0