Python 3.5의 AsyncIO: 대기를 사용해야 하는 경우와 피해야 하는 경우
Python 3.5에서 asyncio를 사용하는 경우 다음을 이해하는 것이 중요합니다. Wait 구문 사용에 대한 적절한 시나리오.
사용 시기 Await
Await는 I/O 작업을 수행하는 비동기 함수에 사용해야 합니다. 여기에는 파일 시스템, 네트워크 또는 이벤트 루프 실행을 차단할 수 있는 기타 리소스에 액세스하는 기능이 포함됩니다. Wait를 사용하면 I/O 작업이 완료될 때까지 작업이 일시 중지되어 이벤트 루프가 그 동안 다른 작업을 처리할 수 있습니다.
Await를 사용하는 경우의 예:
- URL에서 데이터 다운로드: content = wait download(url)
- 파일 열기 및 읽기 file: data = wait open_file(filename)
- 네트워크를 통해 요청 보내기: result = wait send_request(data)
기다림을 피해야 하는 경우
I/O 작업을 수행하지 않는 함수에 대해서는 wait를 피하세요. 동기 코드에 Wait를 사용하면 불필요한 오버헤드가 발생하고 실행 시간이 늘어날 수 있습니다.
Await를 피해야 하는 경우의 예:
- 데이터 구문 분석:parsed_data =parse(input )
- 간단한 계산: 결과 = 계산(a, b)
- 객체 조작: object.value = new_value
특별 고려 사항:
-
장기 실행 동기 작업: 완료하는 데 오랜 시간이 걸리는 동기 작업을 피하세요(예: 50ms 이상) 비동기 함수 내에서. 이는 이벤트 루프를 차단하고 다른 작업이 실행되는 것을 방지할 수 있습니다.
-
장기 동기 작업을 위한 별도 프로세스: 장기 실행 동기 작업이 필요한 경우 별도의 프로세스로 이동할 수 있습니다. , 다른 작업을 위해 이벤트 루프를 해제합니다.
-
I/O 작업을 위한 ThreadPoolExecutor: 이벤트 루프를 차단해서는 안 되는 I/O 작업(예: request.get)에는 ThreadPoolExecutor를 사용하세요. 이는 ProcessPoolExecutor와 관련된 오버헤드를 방지하여 성능을 향상시킬 수 있습니다.
위 내용은 Python 3.5의 AsyncIO: Await를 언제 사용하고 언제 피해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!