memory_profiler¶
Setup¶
pythonprofilers/memory_profiler
pip install memory_profiler
%load_ext memory_profiler
def sum_of_lists(N):
total = 0
for i in range(5):
L = [:fontawesome-solid-link: j ^ (j >> i) for j in range(N)]
total += sum(L)
return total
%memit
¶
%memit sum_of_lists(1000000)
"""
peak memory: 126.53 MiB, increment: 78.57 MiB
"""
%mprun
¶
mprun
works only for functions defined in separate modules rather than the notebook itself.
%%file mprun_demo.py
def sum_of_lists(N):
total = 0
for i in range(5):
L = [:fontawesome-solid-link: j ^ (j >> i) for j in range(N)]
total += sum(L)
del L # remove reference to L
return total
from mprun_demo import sum_of_lists
%mprun -f sum_of_lists sum_of_lists(1000000)
"""
Filename: ./mprun_demo.py
Line # Mem usage Increment Line Contents
================================================
4 71.9 MiB 0.0 MiB L = [:fontawesome-solid-link: j ^ (j >> i) for j in range(N)]
Filename: ./mprun_demo.py
Line # Mem usage Increment Line Contents
================================================
1 39.0 MiB 0.0 MiB def sum_of_lists(N):
2 39.0 MiB 0.0 MiB total = 0
3 46.5 MiB 7.5 MiB for i in range(5):
4 71.9 MiB 25.4 MiB L = [:fontawesome-solid-link: j ^ (j >> i) for j in range(N)]
5 71.9 MiB 0.0 MiB total += sum(L)
6 46.5 MiB -25.4 MiB del L # remove reference to L
7 39.1 MiB -7.4 MiB return total
"""