파이썬의 발전기는 목록이나 튜플과 유사한 반복 가능한 유형이지만 내용물을 메모리에 저장하지는 않습니다. 대신, 그들은 yield
명령문을 사용하여 즉시 값을 생성합니다. 이 게으른 평가 메커니즘을 사용하면 생성기가 한 번에 전체 값 순서를 저장하기 위해 메모리를 소비하지 않기 때문에 생성기가 메모리 효율적 일 수 있습니다.
발전기가 메모리 효율을 향상시키는 방법을 이해하려면 첫 백만 개의 피보나치 숫자를 말하면 많은 수의 숫자를 생성 해야하는 예를 고려하십시오. 목록을 사용하려면 백만 개의 숫자를 모두 메모리에 저장해야합니다. 그러나 생성기는이 숫자를 한 번에 하나씩 생성 할 수 있으며, 주어진 시간에 메모리에 현재 및 이전 값을 유지할 수 있습니다. 이것은 특히 큰 데이터 세트 또는 무한 시퀀스의 메모리 사용량을 크게 줄입니다.
생성기를 사용하여 yield
키워드를 사용하는 함수를 정의하여 반복자를 작성하는 데 사용할 수 있습니다. 이 함수가 호출되면 반복자 인 생성기 객체를 반환합니다. 설명 할 간단한 예는 다음과 같습니다.
<code class="python">def count_up_to(n): i = 0 while i </code>
이 예에서 count_up_to
는 생성기 기능입니다. count_up_to(10)
로 호출되면 for
루프 또는 next()
와 같은 다른 반복 방법을 사용하여 반복 할 수있는 생성기 개체를 반환합니다. 함수 내부의 yield
명령문은 함수의 실행을 일시 중지하고 다음 값이 요청 될 때 중단 된 위치에서 i
의 현재 값을 반환합니다.
파이썬의 발전기와 일반 함수의 주요 차이점은 다음과 같습니다.
실행 모델 :
return
문을 사용하여 값을 반환합니다.yield
사용하여 한 번에 하나씩 일련의 값을 생성하여 값이 요청 될 때 실행을 일시 중지하고 재개합니다.메모리 사용 :
주 관리 :
yield
후 중단 된 곳에서 재개하여 전화 사이의 상태를 유지합니다.용법 :
발전기는 특히 몇 가지 실제 시나리오에서 유익합니다.
이러한 시나리오에서 생성기를 활용하여 개발자는 특히 대량의 데이터 또는 자원으로 제한된 환경을 처리 할 때보다 효율적이고 확장 가능한 코드를 작성할 수 있습니다.
위 내용은 파이썬의 발전기는 무엇입니까? 메모리 효율성을 어떻게 향상 시키는가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!