Files
python-examples/doc/08_03_serialization.md
2025-01-23 11:02:27 +09:00

1.8 KiB

직렬화(Serialization)

직렬화란 파이썬 객체를 바이트 스트림으로 변환하는 과정을 의미합니다. 이렇게 변환된 데이터는 파일로 저장하거나 네트워크를 통해 전송할 수 있으며, 필요할 때 다시 원래의 객체로 복원할 수 있습니다. 마치 객체를 압축하여 박스에 담아 옮기는 것과 비슷합니다.

직렬화 과정

  • 객체 생성: 파이썬에서 사용할 객체를 생성합니다.
  • 직렬화: pickle 모듈 등을 사용하여 객체를 바이트 스트림으로 변환합니다.
  • 저장 또는 전송: 변환된 바이트 스트림을 파일로 저장하거나 네트워크를 통해 전송합니다.
  • 역직렬화: 저장된 바이트 스트림을 다시 원래의 객체로 복원합니다.

직렬화에 사용되는 모듈

  • pickle: 파이썬 객체를 바이너리 형태로 직렬화하는 가장 일반적인 모듈입니다. 간단하고 사용하기 쉽지만, 보안 문제가 있을 수 있습니다.
  • json: JSON 형식으로 직렬화합니다. 사람이 읽을 수 있는 형식이며, 다양한 언어에서 지원됩니다.
  • marshal: 파이썬 객체를 바이트 스트림으로 변환하는 간단한 모듈입니다.
  • shelve: 파이썬 객체를 파일에 저장하고 불러오는 데 특화된 모듈입니다.

pickle

import pickle

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# 객체 생성
person = Person("Alice", 30)

# 직렬화 (파일 저장)
with open('person.pkl', 'wb') as f:
    pickle.dump(person, f)

# 역직렬화 (파일 읽기)
with open('person.pkl', 'rb') as f:
    loaded_person = pickle.load(f)

print(loaded_person.name)  # 출력: Alice
print(loaded_person.age)   # 출력: 30