Sobes.tech
Junior

Serileştirme nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Serileştirme, bir veri yapısı veya nesneyi, saklanabilir, ağ üzerinden iletilebilir veya daha sonra geri yüklenebilir bir formata dönüştürme işlemidir. Ters işlem deseralizasyon olarak adlandırılır.

Serileştirme ana hedefleri:

  • Durumu kaydetme: Bir nesne veya veri yapısının durumunu saklamaya ve daha sonra geri yüklemeye olanak tanır.
  • Veri iletimi: Farklı sistemler veya süreçler arasında veri alışverişi için standartlaştırılmış bir format sağlar.
  • Önbellekleme: Serileştirilmiş veriler geçici depolama için uygundur.

Python'da, serileştirme için sıkça kullanılan modüller ve formatlar şunlardır:

  • pickle: Python nesnelerini serileştirmek ve deseralize etmek için Python'un standart modülü. Python uygulamaları içinde veri kaydetmek ve yüklemek için uygundur. Diğer dillerdeki uygulamalarla veri alışverişi için önerilmez çünkü format özelleşmiştir.

    # Nesne kaydetme
    import pickle
    
    data = {'a': 1, 'b': [2, 3]}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    # Nesne yükleme
    with open('data.pkl', 'rb') as f:
        loaded_data = pickle.load(f)
    
  • json: JSON (JavaScript Object Notation) ile çalışma modülü. Web API'leri ve farklı sistemler arasında veri alışverişi için yaygın olarak kullanılır. JSON, okunabilir ve hafif bir metin formatıdır. Sınırlı veri tipi desteği vardır (dizgiler, sayılar, boolean, listeler, sözlükler, null).

    # JSON'a serileştirme
    import json
    
    data = {'name': 'Alice', 'age': 30}
    json_string = json.dumps(data)
    print(json_string)
    
    # JSON'dan deseralizasyon
    loaded_data = json.loads(json_string)
    print(loaded_data)
    
  • yaml: YAML (YAML Ain't Markup Language) ile çalışma modülü. JSON'a kıyasla daha okunabilir sözdizimi ile ayırt edilir. Konfigürasyon dosyaları için sıkça kullanılır.

    # YAML'e serileştirme (PyYAML kurulumu gerekir)
    # import yaml
    #
    # data = {"list": [1, 2, 3], "dict": {"key": "value"}}
    # yaml_string = yaml.dump(data)
    # print(yaml_string)
    #
    # # YAML'dan deseralizasyon
    # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
    # print(loaded_data)
    
  • protobuf (Protocol Buffers): Google tarafından geliştirilen serileştirme formatı. İkili, verimli ve veri şemalarını destekler (.proto dosyaları kullanılır). Yüksek performanslı sistemlerde ve RPC (Uzak Prosedür Çağrısı) işlemlerinde sıkça kullanılır.

Serileştirme formatı seçimi, belirli göreve, performans gereksinimlerine, okunabilirliğe ve diğer programlama dilleriyle etkileşime ihtiyaç olup olmamasına bağlıdır.