Python (FastAPI & Django) Orta Seviye Dil & Verimlilik

Python Generators & Yield: Bellek Dostu Veri Akışı

10 milyon satırlık veriyi RAM'e tek seferde yüklemeden yudum yudum işleme sanatı.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Baraj kapağını aniden açıp şehri su altında bırakmak yerine (List), musluğu açıp ihtiyacın kadar su bardağını doldurmaktır (Generator).

Teknik & Mimari Tanım

Normal fonksiyonlar "return" ile tüm sonucu hesaplayıp döner ve belleği tüketir. Generator ise "yield" kullanarak her çağrıldığında bir sonraki değeri hesaplar, durumunu (state) dondurur ve bellekte sadece o anki elemanı tutar (Lazy Evaluation).

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“Generator'lar Python'da Iterator protokolünü uygulayan özel fonksiyonlardır. range() fonksiyonu da bir generator mantığıyla çalışır. GB boyutundaki CSV veya log dosyalarını satır satır okurken RAM tüketimini megabyte seviyesinde sabit tutarlar.”

Python (FastAPI & Django) Örnek Uygulaması
def read_huge_file(file_path):
    with open(file_path, 'r') as f:
        for line in f:
            yield line.strip() # Sadece 1 satır bellekte tutulur!

# 10 GB dosya okunurken bile RAM artmaz:
for line in read_huge_file('huge_log.txt'):
    process(line)
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Bir generator'ı [x for x in my_generator()] diyerek tekrar listeye çevirip tüm bellek avantajını yok etmek.