Jupyter Integration¶
We provide an IPython extension that adds a new Jupyter cell magic. This lets you create Memray flame graphs directly in Jupyter notebooks.
memray_flamegraph¶
To load our IPython plugin, you simply need to run:
%load_ext memray
Once it’s loaded, you’ll have access to the %%memray_flamegraph
cell magic.
You can fill a Jupyter cell with %%memray_flamegraph
on its own line,
followed by some code whose memory usage you want to profile. Memray will run
that cell’s code, tracking its memory allocations, and then display a flame
graph directly in Jupyter for you to analyze.
It’s also possible to provide arguments on the %%memray_flamegraph
line.
For instance, %%memray_flamegraph --trace-python-allocators --leaks
would
let you look for memory not freed by the code in the cell:
%%memray_flamegraph --trace-python-allocators --leaks
def a():
return "a" * 10_000
def bc():
return "bc" * 10_000
x = a() + bc()
Arguments¶
usage: %%memray_flamegraph [-h] [--native] [--follow-fork] [--trace-python-allocators]
[--leaks | --temporary-allocation-threshold N | --temporary-allocations]
[--temporal] [--split-threads] [--inverted]
[--max-memory-records MAX_MEMORY_RECORDS]
Named Arguments¶
- --native
Track native (C/C++) stack frames as well
Default:
False
- --follow-fork
Record allocations in child processes forked from the tracked script
Default:
False
- --trace-python-allocators
Record allocations made by the pymalloc allocator
Default:
False
- --leaks
Show memory leaks, instead of peak memory usage
Default:
False
- --temporary-allocation-threshold
Report temporary allocations, as opposed to leaked allocations or high watermark allocations. An allocation is considered temporary if at most N other allocations occur before it is deallocated. With N=0, an allocation is temporary only if it is immediately deallocated before any other allocation occurs.
Default:
-1
- --temporary-allocations
Equivalent to --temporary-allocation-threshold=1
- --temporal
Generate a dynamic flame graph that can analyze allocations in a user-selected time range.
Default:
False
- --split-threads
Do not merge allocations across threads
Default:
False
- --inverted
Invert the flame graph: use allocators as roots instead of thread entry points
Default:
False
- --max-memory-records
Maximum number of memory records to display