Co je serializace?
sobes.tech AI
Odpověď od AI
Serializace je proces převodu datové struktury nebo objektu do formátu, který lze uložit, přenést po síti nebo později obnovit. Opakem je deserializace.
Hlavní cíle serializace:
- Uložení stavu: Umožňuje uložit stav objektu nebo datové struktury pro pozdější obnovení.
- Přenos dat: Zajišťuje standardizovaný formát pro výměnu dat mezi různými systémy nebo procesy.
- Cacheování: Serializovaná data jsou vhodná pro dočasné uložení v cache.
V Pythonu se často používají následující moduly a formáty pro serializaci:
-
pickle: Standardní modul Pythonu pro serializaci a deserializaci Python objektů. Vhodný pro ukládání a načítání dat v Python aplikacích. Nedoporučuje se pro výměnu dat s aplikacemi v jiných jazycích kvůli specifikaci formátu.# Uložení objektu import pickle data = {'a': 1, 'b': [2, 3]} with open('data.pkl', 'wb') as f: pickle.dump(data, f) # Načtení objektu with open('data.pkl', 'rb') as f: loaded_data = pickle.load(f) -
json: Standardní modul pro práci s JSON (JavaScript Object Notation). Široce používaný pro webové API a výměnu dat mezi různými systémy. JSON je textový a lehký formát. Podporuje omezenou sadu datových typů (řetězce, čísla, boolean, seznamy, slovníky, null).# Serializace do JSON import json data = {'name': 'Alice', 'age': 30} json_string = json.dumps(data) print(json_string) # Deserializace z JSON loaded_data = json.loads(json_string) print(loaded_data) -
yaml: Modul pro práci s YAML (YAML Ain't Markup Language). Vyšší čitelnost syntaxe ve srovnání s JSON. Často používaný pro konfigurační soubory.# Serializace do YAML (vyžaduje instalaci PyYAML) # import yaml # # data = {"list": [1, 2, 3], "dict": {"key": "value"}} # yaml_string = yaml.dump(data) # print(yaml_string) # # # Deserializace z YAML # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader) # print(loaded_data) -
protobuf(Protocol Buffers): Formát serializace vyvinutý společností Google. Binární, efektivní a podporuje schémata dat (s použitím souborů.proto). Často používaný v systémech s vysokým výkonem a RPC (Remote Procedure Call).
Výběr formátu serializace závisí na konkrétním úkolu, požadavcích na výkon, čitelnosti a potřebě spolupráce s jinými programovacími jazyky.