← retour aux snippets

cProfile: profilage CPU simple

Profiler un bloc de code et résumer les fonctions les plus coûteuses.

python profiling #cprofile#profiling#pstats

objectif

Profiler un bloc de code et résumer les fonctions les plus coûteuses.

code minimal

import cProfile, pstats, io
pr = cProfile.Profile(); pr.enable()
sum(i*i for i in range(1000))
pr.disable()
s = io.StringIO(); pstats.Stats(pr, stream=s).sort_stats("tottime").print_stats(5)
print(len(s.getvalue()) > 0)  # attendu: True

utilisation

import cProfile
pr = cProfile.Profile(); pr.enable(); [x*x for x in range(1000)]; pr.disable()
print(isinstance(pr.getstats(), list))

variante(s) utile(s)

import pstats, io, cProfile
pr = cProfile.Profile(); pr.enable(); [x for x in range(100)]; pr.disable()
buf = io.StringIO(); pstats.Stats(pr, stream=buf).strip_dirs().print_stats(3)
print("function calls" in buf.getvalue())

notes

  • Utilisez strip_dirs et sort_stats pour faciliter la lecture.
  • Combinez avec KCacheGrind via pyprof2calltree pour visualiser (optionnel).