39 lines
1.8 KiB
Markdown
39 lines
1.8 KiB
Markdown
# 직렬화(Serialization)
|
|
직렬화란 파이썬 객체를 바이트 스트림으로 변환하는 과정을 의미합니다. 이렇게 변환된 데이터는 파일로 저장하거나 네트워크를 통해 전송할 수 있으며, 필요할 때 다시 원래의 객체로 복원할 수 있습니다. 마치 객체를 압축하여 박스에 담아 옮기는 것과 비슷합니다.
|
|
|
|
## 직렬화 과정
|
|
* 객체 생성: 파이썬에서 사용할 객체를 생성합니다.
|
|
* 직렬화: pickle 모듈 등을 사용하여 객체를 바이트 스트림으로 변환합니다.
|
|
* 저장 또는 전송: 변환된 바이트 스트림을 파일로 저장하거나 네트워크를 통해 전송합니다.
|
|
* 역직렬화: 저장된 바이트 스트림을 다시 원래의 객체로 복원합니다.
|
|
|
|
## 직렬화에 사용되는 모듈
|
|
* pickle: 파이썬 객체를 바이너리 형태로 직렬화하는 가장 일반적인 모듈입니다. 간단하고 사용하기 쉽지만, 보안 문제가 있을 수 있습니다.
|
|
* json: JSON 형식으로 직렬화합니다. 사람이 읽을 수 있는 형식이며, 다양한 언어에서 지원됩니다.
|
|
* marshal: 파이썬 객체를 바이트 스트림으로 변환하는 간단한 모듈입니다.
|
|
* shelve: 파이썬 객체를 파일에 저장하고 불러오는 데 특화된 모듈입니다.
|
|
|
|
## pickle
|
|
|
|
```python
|
|
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
|
|
``` |