Memory Profiler
Introducció
En el desenvolupament de programari, conèixer el rendiment dels nostres scripts és crucial per a optimitzar-los i garantir un funcionament eficient. Memory Profiler és una biblioteca de Python que ens permet obtenir informació detallada sobre el consum de memòria dels nostres programes, identificant possibles fuites de memòria i colls d’ampolla.
Recalcar que un bon coneixement del consum dels nostres scripts ens permet tenir un major control i optimització dels recursos de Multivac.
Instal·lació
Hem d’afegir al nostre virtual environment el paquet memory_profiler. Això ho farem executant pip install memory_profiler.
Ho podem fer de dues formes quer veurem a continuació
Codi d’exemple Alternativa 1
Només hem d’afegir la comanda import memory_profiler as mp i afegir les línies que ens permeten calcular el consum de memòria:
import memory_profiler as mp
def quadrat(n):
'''
Funció que calcula el quadrat d'un nombre.
Args:
n: El nombre del qual es vol calcular el quadrat.
Returns:
El quadrat de n.
'''
return n * n
def main():
'''
Funció principal que executa l'algorisme i mostra el seu perfil de memòria.
'''
# Executa la funció quadrat amb diferents valors d'entrada
for i in range(3):
mp.profile(quadrat)(i)
if __name__ == "__main__":
main()
El resultat en aquest cas serà similar a aquest:
Filename: /home/users/alexandre.gracia/tests/memory_profiler/test.py
Line # Mem usage Increment Occurrences Line Contents
=============================================================
3 21.5 MiB 21.5 MiB 1 def quadrat(n):
4 '''
5 Funció que calcula el quadrat d'un nombre.
6
7 Args:
8 n: El nombre del qual es vol calcular el quadrat.
9
10 Returns:
11 El quadrat de n.
12 '''
13 21.5 MiB 0.0 MiB 1 return n * n
Filename: /home/users/alexandre.gracia/tests/memory_profiler/test.py
Line # Mem usage Increment Occurrences Line Contents
=============================================================
3 21.5 MiB 21.5 MiB 1 def quadrat(n):
4 '''
5 Funció que calcula el quadrat d'un nombre.
6
7 Args:
8 n: El nombre del qual es vol calcular el quadrat.
9
10 Returns:
11 El quadrat de n.
12 '''
13 21.5 MiB 0.0 MiB 1 return n * n
Filename: /home/users/alexandre.gracia/tests/memory_profiler/test.py
Line # Mem usage Increment Occurrences Line Contents
=============================================================
3 21.5 MiB 21.5 MiB 1 def quadrat(n):
4 '''
5 Funció que calcula el quadrat d'un nombre.
6
7 Args:
8 n: El nombre del qual es vol calcular el quadrat.
9
10 Returns:
11 El quadrat de n.
12 '''
13 21.5 MiB 0.0 MiB 1 return n * n
Codi d’exemple Alternativa 2
En aquesta alternativa tindrem un informe total de tota la funció main, usant la directiva @mp.profile
import memory_profiler as mp
def quadrat(n):
return n * n
@mp.profile
def main():
for i in range(3):
quadrat(i)
if __name__ == "__main__":
main()
El resultat en aquest cas serà similar a aquest:
Filename: /home/users/alexandre.gracia/tests/memory_profiler/test.py
Line # Mem usage Increment Occurrences Line Contents
=============================================================
6 21.4 MiB 21.4 MiB 1 @mp.profile
7 def main():
8
9 21.4 MiB 0.0 MiB 4 for i in range(3):
10 21.4 MiB 0.0 MiB 3 quadrat(i)