uvloop adalah pengganti loop peristiwa asyncio bawaan yang cepat dan drop-in. uvloop diimplementasikan di Cython dan menggunakan libuv di bawah tenda.
Dokumentasi proyek dapat ditemukan di sini. Silakan periksa juga wiki.
uvloop membuat asyncio 2-4x lebih cepat.
Bagan di atas menunjukkan kinerja server gema dengan ukuran pesan berbeda. Tolok ukur soket menggunakan metode loop.sock_recv()
dan loop.sock_sendall()
; benchmark aliran menggunakan aliran tingkat tinggi asyncio, yang dibuat oleh fungsi asyncio.start_server()
; dan tolok ukur protokol menggunakan loop.create_server()
dengan protokol echo sederhana. Baca lebih lanjut tentang uvloop di postingan blog tentangnya.
uvloop memerlukan Python 3.8 atau lebih tinggi dan tersedia di PyPI. Gunakan pip untuk menginstalnya:
$ pip instal uvloop
Perhatikan bahwa sangat disarankan untuk mengupgrade pip sebelum menginstal uvloop dengan:
$ pip instal -U pip
Mulai uvloop 0.18, cara yang lebih disukai untuk menggunakannya adalah melalui fungsi pembantu uvloop.run()
:
import uvloop
async def main ():
# Main entry-point.
...
uvloop . run ( main ())
uvloop.run()
bekerja hanya dengan mengonfigurasi asyncio.run()
untuk menggunakan uvloop, meneruskan semua argumen ke dalamnya, seperti debug
, misalnya uvloop.run(main(), debug=True)
.
Dengan Python 3.11 dan versi sebelumnya, cuplikan alternatif berikut dapat digunakan:
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 ())
Untuk membuat uvloop, Anda memerlukan Python 3.8 atau lebih tinggi:
Kloning repositori:
$ git clone --rekursif [email protected]:MagicStack/uvloop.git $cd uvloop
Buat lingkungan virtual dan aktifkan:
$ python3 -m venv uvloop-dev $ sumber uvloop-dev/bin/aktifkan
Instal dependensi pengembangan:
$ pip instal -e .[dev]
Membangun dan menjalankan pengujian:
$ membuat $ melakukan tes
uvloop memiliki lisensi ganda di bawah lisensi MIT dan Apache 2.0.