uvloop는 내장된 asyncio 이벤트 루프를 신속하게 대체하는 것입니다. uvloop는 Cython에서 구현되었으며 내부적으로 libuv를 사용합니다.
프로젝트 문서는 여기에서 찾을 수 있습니다. 위키도 확인해 보세요.
uvloop는 asyncio를 2~4배 더 빠르게 만듭니다.
위 차트는 메시지 크기가 서로 다른 에코 서버의 성능을 보여줍니다. 소켓 벤치마크는 loop.sock_recv()
및 loop.sock_sendall()
메서드를 사용합니다. 스트림 벤치마크는 asyncio.start_server()
함수로 생성된 asyncio 상위 수준 스트림을 사용합니다. 프로토콜 벤치마크는 간단한 에코 프로토콜과 함께 loop.create_server()
사용합니다. 블로그 게시물에서 uvloop에 대해 자세히 알아보세요.
uvloop에는 Python 3.8 이상이 필요하며 PyPI에서 사용할 수 있습니다. pip를 사용하여 설치하십시오.
$ pip 설치 uvloop
uvloop를 설치하기 전에 다음을 사용하여 pip를 업그레이드하는 것이 좋습니다.
$ pip 설치 -U pip
uvloop 0.18부터 선호되는 사용 방법은 uvloop.run()
도우미 함수를 사용하는 것입니다.
import uvloop
async def main ():
# Main entry-point.
...
uvloop . run ( main ())
uvloop.run()
uvloop를 사용하도록 asyncio.run()
구성하고 debug
와 같은 모든 인수를 전달하여 작동합니다(예: uvloop.run(main(), debug=True)
.
Python 3.11 이하에서는 다음 대체 코드 조각을 사용할 수 있습니다:
import asyncio
import sys
import uvloop
async def main ():
# Main entry-point.
...
if sys . version_info >= ( 3 , 11 ):
with asyncio . Runner ( loop_factory = uvloop . new_event_loop ) as runner :
runner . run ( main ())
else :
uvloop . install ()
asyncio . run ( main ())
uvloop를 빌드하려면 Python 3.8 이상이 필요합니다.
저장소를 복제합니다.
$ git clone --recursive [email protected]:MagicStack/uvloop.git $ CD UV루프
가상 환경을 생성하고 활성화합니다.
$ python3 -m venv uvloop-dev $ 소스 uvloop-dev/bin/활성화
개발 종속성을 설치합니다.
$ pip install -e .[dev]
테스트 빌드 및 실행:
$만들다 $ 테스트하기
uvloop은 MIT 및 Apache 2.0 라이센스에 따라 이중 라이센스를 받았습니다.