내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
코루틴은 프로그램에 대한 여러 진입점이 특정 위치에서 실행을 일시 중지하고 재개할 수 있도록 하는 프로그램 구성 요소입니다. 스레드 및 프로세스와 달리 코루틴 전환은 운영 체제에 의해 예약되지 않고 프로그래머에 의해 명시적으로 제어됩니다. 전체 실행 환경(예: 스레드 스택)을 저장하고 복원할 필요가 없기 때문에 컨텍스트 전환을 수행할 때 코루틴을 더 가볍게 만듭니다.
Python에서 코루틴은 주로 다음을 전달합니다.async
그리고await
달성할 키워드. 이러한 키워드를 사용하여 정의된 함수를 "코루틴 함수"라고 하며 호출 시 즉시 실행되지 않고 대신 코루틴 객체를 반환합니다. 이 코루틴 객체는 이벤트 루프에서 실행되도록 예약되어야 합니다.
비동기 프로그래밍은 특정 장기 실행 작업(예: I/O 작업)이 완료되기를 기다리는 동안 프로그램이 다른 작업을 계속 수행할 수 있도록 하는 동시성 모델입니다. Python에서는 이벤트 루프를 통해 실행이 예약되는 코루틴과 함께 비동기 프로그래밍이 자주 사용됩니다.
async
그리고await
async def
코루틴 함수를 정의합니다.await
다른 코루틴이나 비동기 작업이 완료될 때까지 기다립니다.asyncio
라이브러리는 이벤트 루프의 구현을 제공합니다. 비동기 코드가 일부 이벤트 루프에서 실행되는지 확인해야 합니다.asyncio.run(main())
이벤트 루프를 자동으로 생성하고 관리하는 기본 코루틴 기능을 실행합니다.python复制代码
import asyncio | |
# 定义一个异步函数,模拟一个耗时的I/O操作 | |
async def fetch_data(url): | |
print(f"Fetching {url}...") | |
# 模拟耗时操作 | |
await asyncio.sleep(1) | |
return f"Data from {url}" | |
async def main(): | |
# 同时启动多个异步任务 | |
task1 = asyncio.create_task(fetch_data('http://example.com/data1')) | |
task2 = asyncio.create_task(fetch_data('http://example.com/data2')) | |
# 等待所有任务完成 | |
result1, result2 = await asyncio.gather(task1, task2) | |
print(result1) | |
print(result2) | |
# 运行主协程 | |
asyncio.run(main()) |
이 예에서는fetch_data
네트워크 요청을 시뮬레이션하는 비동기 함수입니다.main
기능에서는 동시에 두 개를 시작했습니다.fetch_data
비동기 작업 및 사용await asyncio.gather()
동시에 끝날 때까지 기다리십시오.
asyncio
Python 표준 라이브러리의 일부이며 코루틴 및 비동기 프로그래밍을 지원하는 데 사용됩니다.또한 다음과 같은 풍부한 API를 제공합니다.asyncio.Queue
、asyncio.Lock
비동기 코드의 동시성 및 동기화 문제를 처리하는 데 사용됩니다.