Real Python Podcast Episode #128 Title Artwork

Episode 128: Using a Memory Profiler in Python & What It Can Teach You

The Real Python Podcast

Oct 07, 2022 1h 3m

Have you used a memory profiler to gauge the performance of your Python application? Maybe you’re using it to troubleshoot memory issues when loading a large data science project. What could running a profiler show you about a codebase you’re learning? This week on the show, Pablo Galindo Salgado returns to talk about Memray, a powerful tracing memory profiler.

Pablo developed Memray while working at Bloomberg to track memory allocations beyond Python code into native extensions and the interpreter itself. It’s a compelling tool that provides fine-grain reports to help you understand where memory is used.

Pablo shares the reporting that Memray provides, including live mode, flame graphs, and a pytest plug-in. We also discuss how a tracing memory profiler can help you understand a new codebase.

He walks through how he developed the first prototype internally and eventually moved the project into open source. This is the first part of my conversation with Pablo. In a couple of weeks, you’ll get the second part, where we talk about Python guilds inside large companies and his work as the release manager for Python 3.10 and 3.11.

Topics:

  • 00:00:00 – Introduction
  • 00:02:48 – When should you use a memory profiler?
  • 00:05:13 – Fine-grain reporting
  • 00:13:17 – Sampling profiler vs tracing profiler
  • 00:19:46 – Sponsor: Deepgram
  • 00:20:31 – What is a flame graph?
  • 00:30:36 – Using Rich for terminal reporters
  • 00:40:08 – Currently only Linux and macOS
  • 00:41:13pytest plug-in
  • 00:42:03 – Showing native allocation details
  • 00:44:20 – Video Course Spotlight
  • 00:45:52 – Using a profiler to learn a codebase
  • 00:54:39 – Moving from internal project to open source
  • 01:02:17 – Thanks and goodbye

Show Links: