pickle 모듈

2020. 12. 18. 20:16·[Language] - Python

개요


직장에서 PyQt 작업하는 도중 QTableWidget에 들어있는 데이터를 복사해야 하는 경우가 생겼다. 필자는 데이터를 일일이 파싱하여 붙여넣는 과정이 매우 번거롭다고 생각했다. 그래서 QTableWidget 객체 자체를 복사하면 어떨까? 라는 의문을 가졌다. 그리고 처음으로 시도한 것은 copy 모듈을 사용하여 객체를 깊은 복사(deep copy)를 시도했다. 그러나, "Can't Pickle" 이라는 문구와 함께 복사가 되지 않았다.

 

복사가 되지 않는 이유를 찾아보니, PyQT의 클래스는 기본적으로 Qt(C++ 베이스)를 기반으로 하고 있고, model-view 패턴으로 이루어져 있기 때문에 pickle로는 메모리 상태만 복원이 가능할 뿐, 복사가 불가능하다는 글을 읽었다. 본론으로 돌아와 계속 검색을 하던 도중 pickle이라는 별도의 모듈이 존재하는 것을 보았다.

 


 

요점을 정리하자면 python의 객체들을 .pickle이라는 확장자 명의 파일로 직렬화(Serialize)하고 나중에 해당 파일을 역질렬화(Deserialize)하여 객체를 다시 불러올 수 있다. 필자가 생각하기에 역/직렬화의 장점은 특정 객체들을 파일이라는 형태로 보관하기 때문에 삭제하지 않는 이상 영구적으로 남아있고, 다른 프로젝트에서도 전역적으로 사용할 수 있다는 장점이 있다고 생각한다. 예를 들면, 애플리케이션의 상태를 오브젝트 스토리지에 보관하는 나름 비효율적인 창의적인 방안이 떠올랐다. (일반적으로 학습된 모델 체크포인트를 직렬화하는데 사용한다.)

 

 


 

 

레퍼런스


docs.python.org/ko/3/library/pickle.html

 

pickle — 파이썬 객체 직렬화 — Python 3.9.1 문서

pickle — 파이썬 객체 직렬화 소스 코드: Lib/pickle.py pickle 모듈은 파이썬 객체 구조의 직렬화와 역 직렬화를 위한 바이너리 프로토콜을 구현합니다. 《피클링(pickling)》은 파이썬 객체 계층 구조가

docs.python.org

 

 

'[Language] - Python' 카테고리의 다른 글

덕 타이핑 (Duck Typing)  (2) 2020.12.29
추상 베이스 클래스 (Abstract Base Class)  (0) 2020.12.28
접근제한자 (Access Modifier)  (0) 2020.12.14
정적 메소드 staticmethod, classmethod, instancemethod  (0) 2020.12.09
가변인자 args, kwargs  (0) 2020.12.09
'[Language] - Python' 카테고리의 다른 글
  • 덕 타이핑 (Duck Typing)
  • 추상 베이스 클래스 (Abstract Base Class)
  • 접근제한자 (Access Modifier)
  • 정적 메소드 staticmethod, classmethod, instancemethod
Bebsae
Bebsae
  • Bebsae
    뱁새zip
    Bebsae
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • [DevOps] - Kubernetes (5)
      • [DevOps] - AWS (1)
      • [AI] - Machine Learning (19)
      • [AI] - Neural Network (7)
      • [CS] - Network (2)
      • [CS] - Data Structure (3)
      • [CS] - Design Pattern (6)
      • [Language] - Python (15)
      • [Library] - Numpy (7)
        • Quick Start (5)
        • API (2)
      • [Framework] - Django (3)
      • [Framework] - QGIS (6)
      • [Framework] - PyQT (4)
      • [Mathematics] - Linear Alge.. (14)
      • [Mathematics] - Statistical (2)
      • [ETC] - Python (3)
      • [ETC] - C++ (1)
      • [ETC] - Linux (1)
      • 논문 (5)
      • 회고록 (3)
      • 생산성 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    linearalgebra
    분해
    DEEPLEARNING
    algebra
    교차검증
    선형대수
    RNN
    MachineLearning
    Learning
    신경망
    파이썬
    Machine
    decomposition
    Linear
    Python
    numpy
    Convolution
    QGIS
    머신러닝
    디자인패턴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Bebsae
pickle 모듈
상단으로

티스토리툴바