Project Euler ve diğer kodlama yarışmalarında yazdığımız kodlar genellikle belirli bir süreden kısa zamanda çalışmak zorunda. Ya da bir program yazarken çözümümüzün ne kadar hızlı çalıştığını merak ederiz.
Peki bir Python programının çalışmasının ne kadar sürdüğünü öğrenmenin veya çalışma profilini oluşturmanın en iyi yolu nedir?
Python, cProfile adlı bir profil oluşturucu içerir. Yalnızca toplam çalışma süresini vermekle kalmaz, aynı zamanda her işlevi ayrı ayrı zamanlar ve her işlevin kaç kez çağrıldığını söyler, bu da iyileştirmeleri nerede yapmanız gerektiğini belirlemenizi kolaylaştırır.
Kodunuzun içinden veya yorumlayıcıdan şu şekilde çağırabilirsiniz:
import cProfile
cProfile.run('foo()')
Daha da yararlı olarak, bir komut dosyası çalıştırırken cProfile’ı çağırabilirsiniz:
python -m cProfile myscript.py
Ve şunu görüyoruz:
1007 function calls in 0.061 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.061 0.061 <string>:1(<module>)
1000 0.051 0.000 0.051 0.000 euler048.py:2(<lambda>)
1 0.005 0.005 0.061 0.061 euler048.py:2(<module>)
1 0.000 0.000 0.061 0.061 {execfile}
1 0.002 0.002 0.053 0.053 {map}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler objects}
1 0.000 0.000 0.000 0.000 {range}
1 0.003 0.003 0.003 0.003 {sum}
Ayrıca PyCon 2013’teki python profili oluşturma başlıklı YouTube videosuna da göz atabilirsiniz.