1.8 KiB
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