콘텐츠로 건너뛰기
Home » BaseRunLoop

BaseRunLoop

Python 표준 함수를 asyncio에서 비동기로 호출하는 방법

파이썬 3.4에서 asyncio 가 추가되어 I/O 바운드된 작업을 단일 스레드에서 비동기로 처리할 수 있는 방법이 생겼다. 하지만 대부분의 파이썬 내장 라이브러리 함수들은 코루틴이 아닌 일반 함수들이며, 이들은 모두 블럭킹 방식으로 동작한다. 즉 asyncio 의 비동기는 실질적으로는 I/O 액세스처럼 CPU가 관여할 필요가 없는 일들에 대해서 “병렬적으로 기다리는” 식으로 동시다발적인 처리의 전체 수행 시간을 줄이는 식으로 동작하는데, 그 중에 이런 블럭킹 함수로 처리되는 과정이 끼어 있다면 수행 시간 단축이 어렵게 된다. 런루프 이 블로그의 다른 글에서도 몇 번 이야기했듯이, 파이썬에는 GIL(전역 인터프리터… 더 보기 »Python 표준 함수를 asyncio에서 비동기로 호출하는 방법