Pour obtenir des statistiques de profil rapides sur un ordinateur portable IPython. On peut incorporer line_profiler et memory_profiler directement dans leurs cahiers.
Un autre package utile est Pympler . Il s'agit d'un puissant package de profilage capable de suivre les classes, les objets, les fonctions, les fuites de mémoire, etc. Exemples ci-dessous, documents joints.
Tu piges!
!pip install line_profiler
!pip install memory_profiler
!pip install pympler
Charge le!
%load_ext line_profiler
%load_ext memory_profiler
Utilise le!
%temps
%time print('Outputs CPU time,Wall Clock time')
#CPU times: user 2 µs, sys: 0 ns, total: 2 µs Wall time: 5.96 µs
Donne:
- Temps CPU: temps d'exécution au niveau CPU
- sys times: temps d'exécution au niveau du système
- total: temps CPU + temps système
- Heure du mur: Horloge murale
% timeit
%timeit -r 7 -n 1000 print('Outputs execution time of the snippet')
#1000 loops, best of 7: 7.46 ns per loop
- Donne le meilleur temps sur un nombre donné de courses (r) en boucle (n) fois.
- Affiche les détails de la mise en cache du système:
- Lorsque des extraits de code sont exécutés plusieurs fois, le système met en cache quelques opérations et ne les réexécute pas, ce qui peut nuire à la précision des rapports de profil.
% élagage
%prun -s cumulative 'Code to profile'
Donne:
- nombre d'appels de fonction (ncalls)
- a des entrées par appel de fonction (distinct)
- temps pris par appel (percall)
- temps écoulé jusqu'à cet appel de fonction (cumtime)
- nom du func / module appelé etc ...
% memit
%memit 'Code to profile'
#peak memory: 199.45 MiB, increment: 0.00 MiB
Donne:
- Utilisation de la mémoire
% lprun
#Example function
def fun():
for i in range(10):
print(i)
#Usage: %lprun <name_of_the_function> function
%lprun -f fun fun()
Donne:
sys.getsizeof
sys.getsizeof('code to profile')
# 64 bytes
Renvoie la taille d'un objet en octets.
asizeof () de pympler
from pympler import asizeof
obj = [1,2,("hey","ha"),3]
print(asizeof.asizeof(obj,stats=4))
pympler.asizeof peut être utilisé pour étudier la quantité de mémoire consommée par certains objets Python. Contrairement à sys.getsizeof, asizeof taille les objets récursivement
tracker de pympler
from pympler import tracker
tr = tracker.SummaryTracker()
def fun():
li = [1,2,3]
di = {"ha":"haha","duh":"Umm"}
fun()
tr.print_diff()
Suit la durée de vie d'une fonction.
Le package Pympler se compose d'un grand nombre de fonctions hautement utiles pour profiler le code. Tout cela ne peut pas être couvert ici. Voir la documentation jointe pour les implémentations de profil détaillé.
Pympler doc