You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Fantix King afb326897c
uvloop v0.17.0
2 weeks ago
.github Longer test timeout (#497) 2 weeks ago
docs Fix CI badge in docs, remove remaining Travis CI references from docs 2 months ago
examples/bench Fix examples for Python 3.10 2 years ago
tests bugfix: write to another transport in resume_writing() fails (#498) 2 weeks ago
uvloop uvloop v0.17.0 2 weeks ago
vendor Bump to libuv 1.43.0 2 weeks ago
.editorconfig Add .editorconfig 6 years ago
.flake8 Python 3.10 support (#432) 1 year ago
.gitignore Fix segfault in TimerHandle.when() after cleared 2 months ago
.gitmodules Switch libuv submodule url to https 7 years ago
LICENSE-APACHE Queue write only after processing all buffers (#445) 3 weeks ago
LICENSE-MIT Queue write only after processing all buffers (#445) 3 weeks ago
MANIFEST.in Add typings (#366) 2 years ago
Makefile Fix tests invocation on release CI worklow (#489) 3 weeks ago
README.rst Fix typo in README 1 month ago
mypy.ini Add typings (#366) 2 years ago
performance.png readme: Add a section about uvloop performance 6 years ago
pytest.ini Python 3.10 support (#432) 1 year ago
setup.py Partially revert "Fix running of setup.py test with recent setuptools. (#84)" 3 weeks ago

README.rst

image

image

PyPI - Downloads

uvloop is a fast, drop-in replacement of the built-in asyncio event loop. uvloop is implemented in Cython and uses libuv under the hood.

The project documentation can be found here. Please also check out the wiki.

Performance

uvloop makes asyncio 2-4x faster.

image

The above chart shows the performance of an echo server with different message sizes. The sockets benchmark uses loop.sock_recv() and loop.sock_sendall() methods; the streams benchmark uses asyncio high-level streams, created by the asyncio.start_server() function; and the protocol benchmark uses loop.create_server() with a simple echo protocol. Read more about uvloop in a blog post about it.

Installation

uvloop requires Python 3.7 or greater and is available on PyPI. Use pip to install it:

$ pip install uvloop

Note that it is highly recommended to upgrade pip before installing uvloop with:

$ pip install -U pip

Using uvloop

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())

Building From Source

To build uvloop, you'll need Python 3.7 or greater:

  1. Clone the repository:

    $ git clone --recursive git@github.com:MagicStack/uvloop.git
    $ cd uvloop
  2. Create a virtual environment and activate it:

    $ python3.7 -m venv uvloop-dev
    $ source uvloop-dev/bin/activate
  3. Install development dependencies:

    $ pip install -e .[dev]
  4. Build and run tests:

    $ make
    $ make test

License

uvloop is dual-licensed under MIT and Apache 2.0 licenses.