>백엔드 개발 >Golang >Go의 고루틴은 어떻게 Python의 생성기를 모방할 수 있습니까?

Go의 고루틴은 어떻게 Python의 생성기를 모방할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-09 15:30:02862검색

How Can Go's Goroutines Mimic Python's Generators?

Go의 생성기: Pythonic 접근 방식

Go 둘러보기에서 질문 66은 고루틴을 강력한 동시성 메커니즘으로 소개합니다. 그러나 Python의 생성기를 모방할 수도 있습니다.

고루틴을 사용하여 다음과 같은 Fibonacci 생성기 구현을 고려해 보세요.

질문과 답변

  • 버퍼 크기 증가: 버퍼 크기를 사용하면 생산자(fibonacci goroutine)가 한 번에 여러 값을 보낼 수 있습니다. 이는 컨텍스트 전환을 줄여 실제로 성능을 향상시킬 수 있습니다.
  • 메모리 관리: fibonacci 고루틴은 채널을 열린 상태로 유지하면서 무기한으로 계속 실행됩니다. 기본 고루틴이 종료되면 채널이 가비지 수집되지 않아 메모리 누수가 발생합니다.

이러한 문제를 극복하려면 보다 Python적인 접근 방식을 사용할 수 있습니다.

이 수정된 버전에서는:

  • 생성기 함수 fib는 정수 n을 인수로 취하고 다음을 반환합니다. 채널.
  • fib 내에서 생성된 고루틴은 최대 n까지 모든 피보나치 수를 생성한 후 채널을 닫습니다.
  • 메인 고루틴은 채널이 닫힐 때까지 채널을 반복합니다.

이 접근 방식을 사용하면 메모리 누수를 방지하고 보다 유연한 피보나치 수 생성이 가능합니다.

위 내용은 Go의 고루틴은 어떻게 Python의 생성기를 모방할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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