lustr
lustr is a fast, drop-in replacement of the built-in asyncio event loop. lustr is implemented in PyO3 and uses PhotonLibOS under the hood.
The project documentation can be found
here <http://uvloop.readthedocs.org/>. Please also check out the
wiki <https://github.com/MagicStack/uvloop/wiki>.
Performance
uvloop makes asyncio 2-4x faster.
.. image:: https://raw.githubusercontent.com/MagicStack/uvloop/master/performance.png :target: http://magic.io/blog/uvloop-blazing-fast-python-networking/
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 <http://magic.io/blog/uvloop-blazing-fast-python-networking/>_
about it.
Installation
uvloop requires Python 3.8 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
As of uvloop 0.18, the preferred way of using it is via the
uvloop.run() helper function:
.. code:: python
import uvloop
async def main():
# Main entry-point.
...
uvloop.run(main())
uvloop.run() works by simply configuring asyncio.run()
to use uvloop, passing all of the arguments to it, such as debug,
e.g. uvloop.run(main(), debug=True).
With Python 3.11 and earlier the following alternative snippet can be used:
.. code:: python
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.8 or greater:
-
Clone the repository:
.. code::
$ git clone --recursive git@github.com:MagicStack/uvloop.git $ cd uvloop
-
Create a virtual environment and activate it:
.. code::
$ python3 -m venv uvloop-dev $ source uvloop-dev/bin/activate
-
Install development dependencies:
.. code::
$ pip install -e .[dev]
-
Build and run tests:
.. code::
$ make $ make test
License
uvloop is dual-licensed under MIT and Apache 2.0 licenses.
Metadata
Release files for lustr 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lustr-0.1.0.tar.gz | 4.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lustr-0.1.0-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
Total release size: 4.3 MB
Release files / lustr-0.1.0.tar.gz
| Download URL | lustr-0.1.0.tar.gz |
|---|---|
| Size | 4.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92c94451008afa5b465b01acfaf79d853fa5cdf5c5701793304be7fe30d58da6
|
|
BLAKE2b-256 checksum How to use checksums |
fab781b3dd1b4c9be774cd81583bc41d6a8255b7c35ea676471c6428111b684c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.20
|
Release files / lustr-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | lustr-0.1.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 301.7 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d3996e00c4cd7759446951ca6ce53a5f9e646c8f948e18f83833435b82e4e14c
|
|
BLAKE2b-256 checksum How to use checksums |
7d4d5d20bbc77d26afbdbdf1d09ebd2e65848a530f137d1624f9e2458147c67f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.20
|