Python'da Performans Optimizasyonu: Kod Hızını Artırmanın Pratik Yolları

Python uygulamalarında performans sorunu genellikle yanlış veri yapısı seçimi ya da gereksiz döngülerden kaynaklanır. Hızı artırmak için önce darboğazı bulman gerekir.

Profiling ile başla. `cProfile` modülü hangi fonksiyonların en çok zaman aldığını gösterir. Böylece kör kuyuya taş atmazsin.

1import cProfile
2import pstats
3
4def ornek_fonksiyon():
5return sum([i**2 for i in range(1000000)])
6
7cProfile.run('ornek_fonksiyon()')

List comprehension sıradan for döngüsünden 2-3 kat daha hızlıdır. Eğer `for i in range(n): liste.append(i)` yazıyorsan, bunu `[i for i in range(n)]` şeklinde değiştir.

Sık kullanılan fonksiyonların sonuçlarını önbelleğe al. `functools.lru_cache` dekoratörü aynı girdiler için tekrar hesaplama yapmaz.

1from functools import lru_cache
2
3@lru_cache(maxsize=128)
4def fibonacci(n):
5if n < 2:
6return n
7return fibonacci(n-1) + fibonacci(n-2)
8
9print(fibonacci(35)) # İlk çağrı yavaş, sonrakiler anlık

Veri yapısı seçimi çok önemli. Büyük listede sık sık arama yapıyorsan set ya da dictionary kullan; list.count() yerine `in` operatörü kullan.

NumPy dizilerini düz Python listelerinin yerine tercih et. Sayısal işlemlerde 10-100 kat daha hızlıdır.

Kütüphane seçiminde de dikkatli ol. Ağır işlemler için C dilinde yazılmış kütüphaneler (NumPy, Pandas, Cython) kullan.

Son olarak, erken optimizasyon tuzağına düşme. Önce çalışan kod yaz, sonra profil al, darboğazı bul, o kısmı optimize et. Çoğu zaman 20% kodun 80% performans farkını yaratır.

konu hakkında tepkinizi verebilirsiniz