uvloop เป็นการแทนที่แบบดรอปอินอย่างรวดเร็วของลูปเหตุการณ์ asyncio ในตัว uvloop ถูกนำไปใช้ใน Cython และใช้ libuv ภายใต้ประทุน
สามารถดูเอกสารประกอบโครงการได้ที่นี่ โปรดตรวจสอบวิกิด้วย
uvloop ทำให้ asyncio เร็วขึ้น 2-4 เท่า
แผนภูมิด้านบนแสดงประสิทธิภาพของเซิร์ฟเวอร์ echo ที่มีขนาดข้อความต่างกัน การวัดประสิทธิภาพ ซ็อกเก็ต ใช้เมธอด loop.sock_recv()
และ loop.sock_sendall()
เกณฑ์มาตรฐาน สตรีม ใช้สตรีมระดับสูงแบบ asyncio ที่สร้างโดยฟังก์ชัน asyncio.start_server()
และเกณฑ์มาตรฐาน โปรโตคอล ใช้ loop.create_server()
กับโปรโตคอล echo แบบง่าย อ่านเพิ่มเติมเกี่ยวกับ uvloop ในโพสต์บล็อกเกี่ยวกับเรื่องนี้
uvloop ต้องการ Python 3.8 หรือสูงกว่าและพร้อมใช้งานบน PyPI ใช้ pip เพื่อติดตั้ง:
$ pip ติดตั้ง uvloop
โปรดทราบว่าขอแนะนำอย่างยิ่งให้ อัปเกรด pip ก่อน ติดตั้ง uvloop ด้วย:
$ pip ติดตั้ง -U pip
ตั้งแต่ uvloop 0.18 วิธีการใช้งานที่ต้องการคือผ่านฟังก์ชันตัวช่วย uvloop.run()
:
import uvloop
async def main ():
# Main entry-point.
...
uvloop . run ( main ())
uvloop.run()
ทำงานโดยเพียงแค่กำหนดค่า asyncio.run()
เพื่อใช้ uvloop โดยส่งผ่านอาร์กิวเมนต์ทั้งหมดไปให้มัน เช่น 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 $ ซีดี uvloop
สร้างสภาพแวดล้อมเสมือนและเปิดใช้งาน:
$ python3 -m venv uvloop-dev $ แหล่งที่มา uvloop-dev/bin/activate
ติดตั้งการพึ่งพาการพัฒนา:
$ pip ติดตั้ง -e .[dev]
สร้างและดำเนินการทดสอบ:
$ ทำ $ ทำการทดสอบ
uvloop ได้รับใบอนุญาตแบบคู่ภายใต้ใบอนุญาต MIT และ Apache 2.0