0

나는 토네이도를 들여다보기 시작하여 user guide을 읽기 시작했다. 그러나 나는 coroutines에 대한 것들을 발견 매우 혼란.토네이도의 코 루틴과 파이썬 3.5의 원시 코 루틴의 장점

파이썬 3.5 비동기를 소개하고 기다리고 있습니다 키워드 (키워드를 사용하여 기능은 또한 "기본이라고합니다 : 한편으로 문서는 장식 @gen.coroutine이 일을 더 쉽게 만들지 만, 다른 한편으로는, 당신을 알려줍니다 방법을 알려줍니다 coroutines "). Tornado 4.3부터는 수율 기반 코 루틴 대신 사용할 수 있습니다. @ gen.coroutine 데코레이터를 사용하여 함수 정의 대신 async def foo()를 사용하고 yield 대신에 기다리십시오. 이 문서의 나머지 부분은 여전히 ​​파이썬의 이전 버전과의 호환성을 위해 수율 스타일을 사용하지만, 사용할 수있는 경우 비동기 및 빠른 실행됩니다 기다리고 : [...]

그래서 지금은 생각하고있다 : "OK 글쎄, 단순히 asyncawait을 사용하면됩니다. " 그러나 모든 예제에서 설명서는 항상 async 키워드 대신 데코레이터를 사용합니다.

코 루틴을 호출하는 방법에 대한 섹션이 있습니다. 문서가 네이티브 키워드에 대해 여전히 사실입니까?

내게주는 장식품은 무엇입니까? 그렇기 때문에 파이썬 3.5 네이티브 구문 대신 사용해야합니까? 문서처럼

(나는 내이 학습 프로젝트에 파이썬 3.5을 사용하고, 그래서 이전 버전과의 호환성을 걱정하지 않는다.)

+0

Python은 잠시 동안 전환 상태가됩니다. coroutines는 3.5가 표준이되는 것처럼 오래된 발전기 기반 비동기 코드를 대체하게 될 것입니다. –

+0

관련 항목 : [PEP 0492 - Python 3.5 async keyword] (// stackoverflow.com/q/31291129) –

답변

1

는 파이썬 3.5 사용 비동기에있어, 기다리고 경우라고하지 "gen.coroutine"데코레이터와 "yield". 파이썬 3.5에서는 데코레이터와 "yield"를 사용하는 이점이 없습니다.

이 자습서에서는 이전 버전의 Python과의 호환성을 위해 이전 스타일을 사용합니다.

파이썬 3.5에서 코 루틴을 호출하려면 "yield"대신 "await"을 사용하십시오. 가이드의 해당 섹션에있는 내용은 모두 정확합니다.

+0

그래서 나는 단순히 async와 await에 대해 배우고 (다른 튜토리얼에서), 모든 예제를 다시 작성하면 'await'와'async'를 사용하는 토네이도 가이드에서는 괜찮을까요? 나는 전체적으로 "비동기 함수를 이런 식으로 호출하고, 그렇게 비하라고"부를 수는 있겠는가? 아니면 기본 키워드로 할 수없는 일이 있습니다. 토네이도를 사용해야하고 그에 대해 알아야합니까? – Zelphir

+0

맞아요. 파이썬 3.5에 있다면 데코레이터와 "yield"를 사용하는 데 이점이 없습니다. 그러나 하단의 "Coroutine Patterns"섹션을 읽으십시오. 다시 async로 대체하고 꾸미기 및 산출량을 기다리십시오 : http://www.tornadoweb.org/en/stable/guide/coroutines.html#coroutine-patterns –

관련 문제