-
예시로 배우는 파이썬 (pickle)PYTHON(파이썬)/파이썬 기초 2024. 10. 14. 08:51728x90반응형
#############################################################################
# Python 기초 12 : pickle
# eplus(www.eiot.co.kr)-나도코딩(YouTube):파이썬 코딩 무료 강의 (기본편) 참조
#############################################################################
import pickle
p_file = open("profile.pickle", "wb")
profile = {"이름":"박명수", "나이":30, "취미":{"축구", "골푸", "코딩"}}
print(profile)
pickle.dump(profile, p_file)
p_file.close
p_file = open("profile.pickle","rb")
profile = pickle.load(p_file)
p_file.close
Goover의 Pickle 이야기
파이썬에서의 pickle 모듈은 객체를 직렬화(serialize)하고 역직렬화(deserialize)하기 위해 사용되는 매우 유용한 도구입니다. 직렬화는 메모리에서 객체의 상태를 바이트 스트림으로 변환하여 파일 등에 저장하게 해 주며, 역직렬화는 저장된 바이트 스트림을 다시 원래의 객체로 복원하는 과정을 의미합니다. 이렇게 객체를 저장하고 불러오는 기능은 데이터를 영속적으로 유지하고 다양한 애플리케이션에서 쉽게 공유할 수 있게 해 주므로, 여러 상황에서 광범위하게 활용됩니다.
1. Pickle 모듈의 기본 사용법
pickle 모듈을 사용하기 위해서는 먼저 해당 모듈을 임포트해야 합니다. 다음은 간단한 예입니다.
import pickle
# 저장할 데이터
data = {'name': 'Alice', 'age': 30, 'city': 'New York'}
# 데이터를 직렬화하여 파일에 저장
with open('data.pkl', 'wb') as file:
pickle.dump(data, file)
# 파일에서 데이터를 읽어와 역직렬화
with open('data.pkl', 'rb') as file:
loaded_data = pickle.load(file)
print(loaded_data) # {'name': 'Alice', 'age': 30, 'city': 'New York'}
위의 코드에서 pickle.dump() 함수는 data라는 딕셔너리 객체를 'data.pkl'이라는 파일에 직렬화하여 저장합니다. wb는 파일을 바이너리 쓰기 모드로 연다는 의미입니다. 그 후, pickle.load() 함수를 통해 바이너리 파일에서 객체를 불러와 loaded_data에 저장하고, 이를 출력하면 원래의 딕셔너리가 그대로 출력되는 것을 확인할 수 있습니다.
2. Pickle의 유용성 및 적절한 사용 사례
pickle 모듈은 다양한 데이터 유형을 직렬화할 수 있기 때문에, 데이터 분석, 머신러닝 모델 저장, 복잡한 데이터 구조 저장 등 여러 분야에서 유용합니다. 예를 들어, 머신러닝 모델을 학습한 후 해당 모델을 다시 사용해야 하는 경우, 모델의 파라미터와 구조를 pickle로 저장하고 필요할 때 불러올 수 있습니다.
from sklearn.linear_model import LogisticRegression
# 모델 학습
model = LogisticRegression()
# model.fit(X_train, y_train)
# 모델 저장
with open('model.pkl', 'wb') as file:
pickle.dump(model, file)
# 모델 불러오기
with open('model.pkl', 'rb') as file:
loaded_model = pickle.load(file)
# loaded_model을 사용하여 예측
# predictions = loaded_model.predict(X_test)
3. Pickle의 주의 사항
하지만 pickle 모듈의 사용 시 몇 가지 주의할 점도 있습니다.
보안 문제: 신뢰할 수 없는 소스에서 직렬화된 데이터를 로드하는 것은 보안상 위험할 수 있습니다. pickle은 코드 실행이 포함될 수 있는 임의의 객체를 복원할 수 있는 기능이 있으므로, 악의적인 코드가 포함될 수 있습니다. 따라서, 안전하지 않은 소스에서 제공된 pickle 파일을 로드하는 것은 피해야 합니다.
호환성: pickle로 직렬화된 데이터는 Python의 특정 버전과 호환되지 않을 수 있습니다. 예를 들어, Python 2에서 직렬화된 객체는 Python 3에서 불러올 수 없는 경우가 많습니다. 따라서 장기적으로 데이터를 아카이브할 필요가 있다면 표준 포맷을 사용하는 것이 더 바람직할 수 있습니다.
결론
파이썬의 pickle 모듈은 객체를 쉽게 저장하고 불러올 수 있는 강력한 도구입니다. 직렬화와 역직렬화의 손쉬운 과정 덕분에 데이터 처리 및 머신러닝 작업에서 널리 사용됩니다. 하지만 보안과 호환성에 유의하며 신뢰할 수 있는 데이터에 대해서만 사용해야 합니다. 이러한 점을 이해하고 활용한다면, 파이썬 프로그래밍의 강력한 기능을 활용할 수 있을 것입니다.728x90'PYTHON(파이썬) > 파이썬 기초' 카테고리의 다른 글
예시로 배우는 파이썬 (CLASS) (0) 2024.10.17 예시로 배우는 파이썬 (WITH) (2) 2024.10.15 예시로 배우는 파이썬 (파일 입/출력) (5) 2024.10.13 예시로 배우는 파이썬 (출력 포멧) (4) 2024.10.10 예시로 배우는 파이썬 (표준입출력) (4) 2024.10.09