Python 생 성기 와 생 성기 기반 의 협 정 을 상세 하 게 설명 합 니 다.
Generator
1.생 성 기 는 값 을 생 성 할 수 있 는 함수2.한 함수 에
yield
키워드 가 있 으 면 생 성기 가 된다.3.생 성 기 는 실행 을 중단 하고 현재 실행 상 태 를 유지 할 수 있 습 니 다.
코드 예제:
def simple_gen():
yield 'hello'
yield 'world'
gen = simple_gen()
print(type(gen)) # 'generator' object
print(next(gen)) # 'hello'
print(next(gen)) # 'world'
2.생 성기 에 기초 한 협 정Python3
이전 에는 원생 협 정 이 없 었 고 생 성기 에 기초 한 협 정 만 있 었 다.1.
pep
342Coroutines via Enhanced Generators
생 성기 기능 강화2.생 성 기 는
yield
을 통 해 실행 을 중단 하고 데 이 터 를 생산 할 수 있 습 니 다.3.동시에
send()
생 성기 에 데 이 터 를 보 내 고throw()
생 성기 에 이상 을 던 지 는 것 을 지원 합 니 다.Generator 기반 Coroteine 코드 예제:
def coro():
hello = yield 'hello' # yield = , send
yield hello
c = coro()
# 'hello', next 'hello',
print(next(c))
# send , hello 'world', yield hello 'world'
print(c.send('world'))
# , send StopIteration
실행 결과:3.협 정의 주의 점
협정 주의 점
1.협 정 은
send(None)
또는next(coroutine)
를 사용 하여 예비 자극prime
을 해 야 작 동 할 수 있다.2.
yield
처 협 정 에서 집행 정지3.단독
yield value
은 호출 자 에 게 값 을 산출 한다.4.
coroutine.send(value)
를 통 해 협 정 에 값 을 보 낼 수 있 습 니 다.보 낸 값 은yield
표현 식 왼쪽 변수value = yield
에 값 을 부여 합 니 다.5.협 정 수행 완료 후(다음
yield
문 구 를 만 나 지 못 함)이상 던 지기StopIteration
4.협 정 장식 기매번 사용 하 는 것 을 피하 다
send
.
from functools import wraps
def coroutine(func): # send(None)
“”“ : `yield` , `func` ”“”
@wrops(func)
def primer(*args, **kwargs): # 1
gen = func(*args, **kwargs) # 2
next(gen) # 3
return gen # 4
return primer
5.python 3 원생 협 정python 3.5 async/await 지원 원생 협 정(native coroutine)도입
import asyncio
import datetime
import random
async def display_date(num, loop):
end_time = loop.time() + 50.0
while True:
print('Loop: {} Time: {}'.format(num, datetime.datetime.now())
if (loop.time() + 1.0) >= end_time:
break
await asyncio.sleep(random.randint(0, 5))
loop = asyncio.get_event_loop()
asyncio.ensure_future(display_date(1, loop))
asyncio.ensure_future(display_date(2, loop))
loop.run_forever()
파 이 썬 생 성기 와 생 성 기 를 기반 으로 한 협 정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 생 성기 와 협 정 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.