반응형
Pickle 활용하기
- 파이썬의 pickle 모듈은 파이썬 객체를 직렬화(serialize)하고 역직렬화(deserialize)하는 데 사용됩니다.
- 직렬화는 객체를 바이트 스트림으로 변환하여 파일로 저장하거나 네트워크를 통해 전송할 수 있게 만드는 과정입니다.
- 역직렬화는 그 바이트 스트림을 다시 원래의 파이썬 객체로 복원하는 과정입니다.
[주요 기능과 사용법]
- 직렬화(Serialization)
- pickle.dump(obj, file): 객체 obj를 파일 file에 직렬화하여 저장합니다.
- pickle.dumps(obj): 객체 obj를 직렬화하여 바이트 객체를 반환합니다.
- 역직렬화(Deserialization)
- pickle.load(file): 파일 file로부터 객체를 읽어와 역직렬화합니다.
- pickle.loads(bytes_object): 바이트 객체로부터 객체를 역직렬화합니다.
[사용 예시]
import pickle
# 객체 생성
data = {'key': 'value', 'number': 42}
# 객체를 파일에 저장
with open('data.pickle', 'wb') as file:
pickle.dump(data, file)
# 파일에서 객체를 읽어옴
with open('data.pickle', 'rb') as file:
loaded_data = pickle.load(file)
# 객체를 바이트 스트림으로 직렬화 (pickle.dumps)
serialized_data = pickle.dumps(data)
# 바이트 스트림에서 객체를 역직렬화 (pickle.loads)
deserialized_data = pickle.loads(serialized_data)
[고급 사용법]
- 커스텀 객체 직렬화:
- 사용자 정의 클래스의 객체를 직렬화하려면, 해당 클래스에 __reduce__ 또는 __reduce_ex__ 메서드를 정의하여 커스텀 직렬화 로직을 구현할 수 있습니다.
class CustomClass:
def __init__(self, value):
self.value = value
def __reduce__(self):
return (self.__class__, (self.value,))
obj = CustomClass(10)
serialized_obj = pickle.dumps(obj)
deserialized_obj = pickle.loads(serialized_obj)
print(deserialized_obj.value) # 출력: 10
- 압축과 결합
- pickle 모듈을 gzip 모듈과 결합하여 데이터를 압축된 형식으로 저장할 수 있습니다.
import gzip
data = {'key': 'value', 'number': 42}
with gzip.open('data.pickle.gz', 'wb') as file:
pickle.dump(data, file)
with gzip.open('data.pickle.gz', 'rb') as file:
loaded_data = pickle.load(file)
print(loaded_data)
반응형
'개발 > Python' 카테고리의 다른 글
[파이썬, Python] 매직 메서드(스페셜 메서드) 활용법 총정리 (0) | 2024.07.11 |
---|---|
[파이썬, Python] 네이밍 방법 총정리 (0) | 2024.07.11 |
[파이썬, Python] pandas 활용법 총정리 (0) | 2024.07.07 |
[파이썬, Python] numpy 활용법 총정리 (0) | 2024.07.07 |
[파이썬, Python] 함수 만들기 (0) | 2022.04.15 |