Python'da Hız Ölçme: profile Modülü
Python'da hız ölçmek için profile veya cprofile modülleri kullanılabilir. Bu modüllerin arasındaki fark, ilkinin saf python ile diğerinin ise C ile uygulanmış olmasıdır. Performans açısından, cprofile modülü daha verimlidir. profile modülü, cprofile modülüne göre yavaş kalır, ancak, saf python ile yazıldığından dolayı, genişletmeye daha müsaittir. Bir de, bazı platformlarda, cprofile modülü bulunmayabilir.
profile.run('foo()')
Bu modülün en basit kullanım şekli, bu modüldeki run()
fonksiyonunu kullanmaktır. Bu fonksiyon, argüman içerisinde verdiğiniz
ifadeyi çalıştırır ve ekrana bazı bilgiler yazar.
Bunun çıktısı da şuna benzer:
4 function calls in 0.000 CPU seconds Ordered by: standart name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.000 0.000 :0(setprofile) # böyle devam ediyor.
En üst satırda, toplam kaç fonksiyon çağırıldığı ve bunların kaç CPU saniyesi sürdüğünü gösteriyor. Altta, gösterimin sıralamasıyla ilgili bir bilgi var, daha sonra, öğrenmek istediğimiz bilgiler bir tablo halinde sunulmuş. Her satırda, bir fonksiyon için bilgiler sunuluyor. İlk sütun o fonksiyonun toplamda kaç kere çağırıldığını gösteriyor. İkinci sütün ise, o fonksiyon içerisinde, toplamda ne kadar vakit harcandığını gösteriyor. Ancak buna, bu fonksiyon içinde çağırılan diğer fonksiyonların harcadığı zaman dahil değil. Bir başka deyişle, sadece bu fonksiyon içinde yapılan işlemlerin harcadığı zaman bu hesaba dahil. 3. sütundaki percall, tottime/ncalls değerini veriyor. Daha sonraki iki satırda ise, alt fonksiyonların harcadığı zamanı da hesaba katarak, 2. ve 3. satırda yapılan işlemleri tekrarlıyor. Son satırda ise, bu bilgilerin hangi fonksiyona ait olduğu, dosyaadı:satır(fonksiyon) şeklinde gösteriliyor.
profile.run('foo()','bar.txt')
ve pstats
run()
ile hesaplanan bilgileri bir dosyaya kaydedip
yazılımınızı geliştirdikçe referans olarak kullanmak isteyebilirsiniz.
Bunu, run("foo()","bar")
şeklinde, run()
fonksiyonuna ikinci argüman olarak bir dosya adı vererek yapabilirsiniz.
Böylece, ölçüm bilgileri, python'un anlayacağı bir dilde, bar isimli
dosyaya kaydolur, daha sonra, bu bilgileri okumak için pstats modülü
kullanılır.
Burada yazılan bilgiler, muhtemelen python'da programlarınızın profilini çıkarmaya başlamak için yeterli olacaktır. Zaten benim bildiğim de bu kadar. Daha fazlasını öğrenmek isteyenler, Python Profil Modülü Belgeleri'ne bakabilir. Kolay Gelsin.