>백엔드 개발 >파이썬 튜토리얼 >Python 비동기 파생을 적용하는 방법

Python 비동기 파생을 적용하는 방법

앞으로
2023-04-19 15:07:08917검색

Introduction

우리가 "파이썬"이라고 하면 리스트나 딕셔너리 컴프리헨션 같은 컴프리헨션이 파이썬의 특징입니다.

이것은 다른 많은 언어와 달리 루프를 수행하는 한 가지 방법입니다.

Asyncio를 사용하면 비동기식 이해력을 사용할 수 있습니다.

비동기 이해를 사용하여 "async for" 표현식을 통해 비동기 생성기와 비동기 반복기를 반복할 수 있습니다.

1. 비동기 파생이란 무엇인가요?

비동기 파생은 고전 파생의 비동기 버전입니다. Asyncio는 두 가지 유형의 비동기 이해를 지원합니다. 즉, "async for" 이해와 "await" 이해입니다.

각각을 살펴보기 전에 먼저 고전 파생을 검토해 보겠습니다.

2. Comprehensions

Comprehensions을 사용하면 목록, 사전, 집합 등의 데이터 컬렉션을 간결하게 만들 수 있습니다. 목록 이해를 사용하면 새 목록 표현식 내의 for 표현식에서 목록을 만들 수 있습니다.

...
# create a list using a list comprehension
result = [a*2 for a in range(100)]

는 사전과 세트를 생성하는 이해력도 지원합니다.

...
# create a dict using a comprehension
result = {a:i for a,i in zip(['a','b','c'],range(3))}
# create a set using a comprehension
result = {a for a in [1, 2, 3, 2, 3, 1, 5, 4]}

3. 비동기 컴프리헨션

비동기 컴프리헨션을 사용하면 비동기 반복 가능 객체와 함께 "async for" 표현식을 사용하여 목록, 세트 또는 사전을 생성할 수 있습니다.

...
# async list comprehension with an async iterator
result = [a async for a in aiterable]

필요에 따라 코루틴이나 작업을 생성 및 예약하고 결과를 목록에 넣습니다.

"async for" 표현식은 코루틴과 작업에서만 사용할 수 있다는 점을 기억하세요.

또한 비동기 반복자는 대기 가능한 객체를 생성하는 반복자라는 점을 기억하세요.

"async for" 표현식을 사용하면 호출자가 대기 중인 개체의 비동기 반복자를 반복하고 각 개체에서 결과를 검색할 수 있습니다.

내부적으로 async for 루프는 필요에 따라 대기 가능한 각 디스패치 코루틴을 자동으로 구문 분석하거나 기다립니다.

비동기 생성기는 비동기 반복기 메서드를 자동으로 구현하며 비동기 파생에도 사용할 수 있습니다.

...
# async list comprehension with an async generator
result = [a async for a in agenerator]

4. Await comprehension

"Wait" 표현은 List, Set, Dictionary Comprehension에서도 사용할 수 있는데 이를 Wait Comprehension이라고 합니다.

비동기 컴프리헨션과 마찬가지로 비동기 코루틴이나 작업에서만 사용할 수 있습니다.

이를 통해 대기 가능한 객체의 시퀀스를 일시 중지하고 대기하여 목록과 같은 데이터 구조를 생성할 수 있습니다.

...
# await list compression with a collection of awaitables
results = [await a for a in awaitables]

이렇게 하면 대기 가능한 각 개체를 차례로 기다리면서 결과 목록이 생성됩니다.

현재 코루틴은 대기 가능한 객체를 순차적으로 실행하기 위해 일시 ​​중지됩니다. 이는 asyncio.gather()를 사용하여 동시에 실행하는 것과 다르며 속도가 느려질 수 있습니다.

위 내용은 Python 비동기 파생을 적용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제