Sobes.tech
Junior

Mi az a serializálás?

sobes.tech MI

Válasz az MI-től

A sorosítás az adatszerkezet vagy objektum átalakítása olyan formátumba, amely menthető, hálózaton keresztül továbbítható vagy később visszaállítható. A fordított folyamat a deszerializáció.

A sorosítás fő céljai:

  • Állapot mentése: Lehetővé teszi egy objektum vagy adatszerkezet állapotának mentését későbbi helyreállítás céljából.
  • Adatok átvitele: Egy szabványosított formátumot biztosít az adatok cseréjéhez különböző rendszerek vagy folyamatok között.
  • Gyorsítótárazás: A sorosított adatok kényelmesek ideiglenes tárolásra gyorsítótárban.

Pythonban gyakran használt modulok és formátumok a sorosításhoz:

  • pickle: A Python alapértelmezett modulja Python objektumok sorosítására és deszerializálására. Alkalmas adatok mentésére és betöltésére Python alkalmazásokon belül. Nem ajánlott más nyelvű alkalmazásokkal való adatcsere esetén a formátum sajátossága miatt.

    # Objektum mentése
    import pickle
    
    data = {'a': 1, 'b': [2, 3]}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    # Objektum betöltése
    with open('data.pkl', 'rb') as f:
        loaded_data = pickle.load(f)
    
  • json: A JSON (JavaScript Object Notation) szabványos modulja. Széles körben használt web-API-k és adatok cseréjéhez különböző rendszerek között. A JSON szöveges és könnyen olvasható formátum. Korlátozott típusokat támogat (karakterláncok, számok, boolean, listák, szótárak, null).

    # JSON-be sorosítás
    import json
    
    data = {'name': 'Alice', 'age': 30}
    json_string = json.dumps(data)
    print(json_string)
    
    # JSON-ből deszerializálás
    loaded_data = json.loads(json_string)
    print(loaded_data)
    
  • yaml: A YAML (YAML Ain't Markup Language) modul. Kifejezetten olvashatóbb szintaxist kínál, mint a JSON. Gyakran használják konfigurációs fájlokhoz.

    # YAML-be sorosítás (PyYAML telepítése szükséges)
    # import yaml
    #
    # data = {"list": [1, 2, 3], "dict": {"key": "value"}}
    # yaml_string = yaml.dump(data)
    # print(yaml_string)
    #
    # # YAML-ből deszerializálás
    # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
    # print(loaded_data)
    
  • protobuf (Protocol Buffers): A Google által fejlesztett sorosítási formátum. Bináris, hatékony és támogatja a sémákat (fájlokkal .proto). Gyakran használják magas teljesítményű rendszerekben és RPC-ben (Távoli eljárás hívás).

A sorosítási formátum kiválasztása a konkrét feladattól, a teljesítményigényektől, az olvashatóságtól és az egyéb nyelvekkel való interoperabilitás szükségességétől függ.