It's nice to see how many different approaches to profiling there are these days in Python. I work on another (commercial but with free plan) Python profiler, Sciagraph: <a href="https://sciagraph.com" rel="nofollow noreferrer">https://sciagraph.com</a>.<p>The main use case is data science and other long-running batch jobs. Some differences:<p>1. It does memory profiling at basically no performance overhead; sounds like for FunctionTrace it's high overhead so off by default. And it catches _all_ memory allocations, not just Python API ones. This is based on using sampling, so it's not useful for profiling tiny functions (but for data science/scientific computing it'll work just fine).<p>2. Uses sampling for performance profiling, unlike FunctionTrace. Again, perfectly fine for any non-micro-benchmark data science program.<p>3. Also has a timeline view, without having to upload your data anywhere.<p>4. No native stacks yet.<p>5. Shows you if you're using CPU or I/O for every particular sample.