>백엔드 개발 >파이썬 튜토리얼 >Pickle 모듈을 사용하여 Python에서 객체를 효과적으로 유지하는 방법은 무엇입니까?

Pickle 모듈을 사용하여 Python에서 객체를 효과적으로 유지하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-11 06:21:11728검색

How to Effectively Persist Objects in Python Using the Pickle Module?

Python에서 객체를 유지하는 방법: 종합 가이드

Python에서 객체로 작업할 때 나중에 사용할 수 있도록 상태를 저장해야 하는 경우가 종종 있습니다. 또는 다른 응용 프로그램에서 공유됩니다. 이 프로세스를 일반적으로 데이터 지속성이라고 합니다.

Pickle 모듈 사용

Python 표준 라이브러리는 피클 모듈이라는 지속 객체를 위한 강력한 도구를 제공합니다. 이를 통해 객체를 직렬화하여 파일에 쓰거나 네트워크를 통해 전송할 수 있는 바이트 스트림으로 효과적으로 변환할 수 있습니다. 다음은 사용법을 보여주는 예입니다.

import pickle

# Create a Company object
company1 = Company('banana', 40)

# Open a file for writing
with open('company_data.pkl', 'wb') as outp:
    # Serialize the object and store it in the file
    pickle.dump(company1, outp, pickle.HIGHEST_PROTOCOL)

# Open a file for reading
with open('company_data.pkl', 'rb') as inp:
    # Deserialize the object and load it into memory
    company1 = pickle.load(inp)

# Retrieve and print the object's attributes
print(company1.name)  # 'banana'
print(company1.value)  # 40

사용자 정의 유틸리티 함수 사용

직렬화 프로세스를 처리하기 위해 간단한 유틸리티 함수를 정의할 수도 있습니다.

def save_object(obj, filename):
    with open(filename, 'wb') as outp:
        pickle.dump(obj, outp, pickle.HIGHEST_PROTOCOL)

# Usage
save_object(company1, 'company1.pkl')

고급 사용법

cPickle(또는 _pickle) 대 pickle:

더 빠른 성능을 위해서는 pickle 모듈을 C로 구현한 cPickle 모듈을 사용하는 것이 좋습니다. 성능 차이는 미미하지만 C 버전이 눈에 띄게 빨라졌습니다. Python 3에서는 cPickle의 이름이 _pickle로 변경되었습니다.

데이터 스트림 형식(프로토콜):

pickle은 프로토콜이라고 알려진 여러 데이터 스트림 형식을 지원합니다. 사용 가능한 가장 높은 프로토콜은 사용되는 Python 버전에 따라 다르며 Python 3.8.1에서는 기본적으로 프로토콜 버전 4가 사용됩니다.

다중 개체:

피클 파일에는 여러 절인 개체가 포함될 수 있습니다. 여러 개체를 저장하려면 목록, 튜플 또는 사전과 같은 컨테이너에 배치한 다음 단일 파일로 직렬화할 수 있습니다.

사용자 정의 로더:

피클 파일에 얼마나 많은 객체가 저장되어 있는지 모르면 아래와 같은 사용자 정의 로더 함수를 사용하여 반복하고 로드할 수 있습니다. 모두:

def pickle_loader(filename):
    with open(filename, "rb") as f:
        while True:
            try:
                yield pickle.load(f)
            except EOFError:
                break

위 내용은 Pickle 모듈을 사용하여 Python에서 객체를 효과적으로 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.