파이썬 메모리 관리

2848 단어

소개



메모리는 단순히 컴퓨터에 데이터를 저장하기 위한 공간입니다. 우리는 또한 기억을 책으로 생각할 수 있습니다. 무언가를 써야 한다면 우리가 쓰려는 문자를 담기에 충분한 공간이 있는 페이지를 열어야 합니다. 우리의 글을 담기에 충분한 공간이 있는 페이지에 쓰는 이 과정은 컴퓨터에서 특정 데이터를 담을 공간을 제공하는 메모리 할당으로도 이해할 수 있습니다.

메모리 할당



두 종류의 메모리 할당이 있습니다.

1. 정적 메모리 할당
이 기술은 C 및 C++와 같은 언어에서 사용되며 정적 키워드는 메모리 공간 할당 중에 사용됩니다. 정적 메모리를 데이터에 할당하면 프로그램에서 메모리를 재사용할 수 없음을 의미합니다. 정적 메모리는 프로그램을 컴파일하는 동안 할당됩니다.Static int a=10;파이썬에서는 정적 메모리 할당을 달성하기 위해 스택 데이터 구조를 구현합니다. 여기서 함수는 임시로 정의된 변수로 정의됩니다. 그런 다음 스택 함수는 다음을 반환합니다. 함수 호출은 값을 반환하고 스택은 다음 작업으로 진행합니다.

2. 동적 메모리 할당
여기서 힙이 구현됩니다. 메모리 할당은 프로그램 실행 중에 발생합니다. C 및 C++int a, char str[20]에서는 미리 정의된 데이터 크기가 있지만 길이 크기 정보가 없기 때문에 메모리 공간이 자동으로 할당 및 할당 해제됩니다. 동적 메모리 할당의 경우 프로그램 전체에서 메모리 공간을 사용할 수 있습니다.
힙 메모리 할당은 사용하지 않거나 메모리 내용이 삭제된 경우 메모리를 해제할 수 있음을 의미합니다.

파이썬에서 메모리 관리 구현



사이파이썬
Python에서 메모리 관리의 기본 구현은 C 프로그래밍 언어로 작성된 라이브러리인 CPython을 통해 이루어집니다. Python은 컴퓨터가 읽을 수 있는 코드인 바이트코드로 해석되고 컴파일됩니다. Cpython에 대한 자세한 내용은 다음documentation을 참조하십시오.
가비지 컬렉터
여유 메모리는 파이썬에서 해제됩니다. Python의 GC 모듈은 개체 추적을 수행하는 데 사용됩니다. GC에는 3세대가 있습니다. 첫째, 둘째, 셋째. 새 개체는 Python 인터프리터가 가비지 수집을 수행하고 개체가 살아남아 두 번째 이전 세대로 이동할 때 1세대에서 생명을 시작합니다. 각 세대에 대해 가비지 수집기 모듈에는 임계값 개체 수가 있습니다. 개체 수가 해당 임계값을 초과하면 가비지 수집기가 수집 프로세스를 트리거합니다. 해당 프로세스에서 살아남은 개체는 이전 세대로 이동됩니다.

Import gc
gc.get_threshold()
#outputs (700,10,10)


700은 1세대, 10은 2세대, 나머지 10은 3세대를 의미합니다.
가비지 수집 프로세스를 실행하면 엄청난 양의 개체가 정리됩니다.gc.get_count() 방법은 각 카운트의 세대 수를 확인하는 데 사용됩니다.
가비지 수집기에 대한 자세한 내용은 following website에서 찾을 수 있습니다.

#공간 복잡도를 줄이는 방법


  • 목록 분할 방지
    목록 슬라이싱은 개체의 복사본을 만듭니다
  • .
  • 목록 인덱싱을 신중하게 사용하십시오.for index in range(len(array))를 사용하는 대신 for item in array를 사용하십시오.
  • 문자열 연결에 "+"연산자를 너무 많이 사용하지 마십시오.
    대신 다음을 시도하십시오.

  • a=”millet”
    a=a+” ugali”
    print(a) #output millet ugali
    

    대신에

    a=”millet” +” ugali”
    


    참조


  • javapoint
  • stackify
  • Cpython
  • Memory management
  • 좋은 웹페이지 즐겨찾기