프로그래밍/파이썬 분석(3)
-
2. 파이썬의 메모리 관리 기법 2 - 가비지 콜랙션
지난 포스팅에서는 파이썬의 레퍼런스카운팅에 대해 작성했습니다. 3줄 요약하자면 파이썬의 모든 것은 객체(object)이다. 객체(object)는 동적할당으로서 관리된다. 파이썬 내에서 사용을 하면 레퍼런스 카운트가 올라가고, 사용이 끝나면 (레퍼런스 카운트가 0이 되면) 해제된다. 이 외의 파이썬 메모리 관리 기법은 아래 블로그를 참고하여 공부하였습니다 https://velog.io/@swhan9404/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC%EA%B3%BC-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8-%EC%BD%94%EB%93%9C 파이썬 메모리 관리과 효율적인 코드 파이썬의 좋은 점은 ..
2021.06.30 -
1. 파이썬의 메모리 관리 방법 - RC 1
1. 레퍼런스 카운팅 (RC) 1-1. 구조 및 내용 분석하기 파이썬은 레퍼런스 카운트 전략을 사용하여 모든 객체에 카운트를 포함합니다. 카운트는 객체가 참조될 때 증가하고, 참조가 삭제될 떄 감소 시키는 방법으로 동작합니다. /* cpython/object.h */ typedef struct _object { _PyObject_HEAD_EXTRA // 디버깅 시에만 사용됨 Py_ssize_t ob_refcnt; PyTypeObject *ob_type; // 파이썬 객체에 대한 정보가 저장된다. } PyObject; /* ob_refcnt를 증가시킵니다. */ static inline void _Py_INCREF(PyObject *op) { #if defined(Py_REF_DEBUG) && define..
2021.06.19 -
0. 분석 개요
파이썬을 주력언어로 사용하기 시작하면서 알고 쓰는것과, 모르고 쓰는것에 대한 차이가 크다라고 판단을 하였다. 그러던 중 파이썬 built-in 함수를 분석하고 싶어졌고, Cpython을 열어보기 위해 기본적인 PyObject 등을 분석한 후 블로그에 포스팅 하기로 하였다. 물론 익숙하지 않고, 프로그래밍적 지식이 높지 않아 분석에 많은 어려움이 있고, 틀린 부분이 있을 수도 있으나, 우선 돌아가는 구조를 알아보는 것을 일차적인 목표로 하고, 파이썬 공식 포럼 내용과 원하는 대로 동작하지 않는 부분을 PR 까지 해보는것이 최종 목표이다. 😉블로그 작성 중 발견된 오류는 댓글로 알려주신다면 학습에 매우 큰 도움이 될 것 같습니다. 틀린부분이 있다면 거침없이 지적해주신다면 감사드리겠습니다!
2021.06.18