Skip to content

MagicStack/uvloop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5ce484a · Aug 7, 2018
Aug 2, 2018
Jun 25, 2018
Nov 10, 2017
May 25, 2018
Aug 7, 2018
Aug 7, 2018
May 23, 2018
Oct 22, 2016
May 22, 2018
Feb 3, 2016
Jul 4, 2018
Sep 13, 2017
Jul 5, 2016
Jul 5, 2016
May 30, 2018
Jul 4, 2018
May 22, 2016
Nov 24, 2017
Aug 2, 2018
Jun 21, 2018

Repository files navigation

https://travis-ci.org/MagicStack/uvloop.svg?branch=master

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.

performance.png

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 performance.

Installation

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

$ pip install uvloop

Using uvloop

To make asyncio use uvloop, you can install the uvloop event loop policy:

import asyncio
import uvloop

asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

Building From Source

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

  1. Clone the repository:

    $ git clone --recursive [email protected]:MagicStack/uvloop.git
    $ cd uvloop
    
  2. Create a virtual environment and activate it, for example:

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

    $ pip install -r requirements.dev.txt
    
  4. Build and run tests:

    $ make && make test
    

License

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