# Is uvloop still faster than built-in asyncio event loop?

**URL:** <https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136>\
**Category:** Async-SIG\
**Tags:** help\
**Created:** [November 14, 2024, 9:40am UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136 "2024-11-14T09:40:32Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![drmason13](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/drmason13/32/22591_2.png) [@drmason13](https://discuss.python.org/u/drmason13)\
**Post date:** [November 14, 2024, 9:40am UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/1 "2024-11-14T09:40:32Z")

</div>

If so, why hasn’t the standard asyncio event loop switched to use it?

I’m considering using it, but am suspicious of it magically being faster with no other tradeoffs or concerns. Sounds too good to be true.

Put another way, as an application author, should I use [uvloop](https://github.com/MagicStack/uvloop) for performance reasons?

---

<div class="post-metadata">

**Author:** ![Tinche](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tinche/32/12507_2.png) [@Tinche](https://discuss.python.org/u/Tinche)\
**Post date:** [November 14, 2024, 10:20am UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/2 "2024-11-14T10:20:53Z")

</div>

> [@drmason13](#):
>
> I’m considering using it, but am suspicious of it magically being faster with no other tradeoffs or concerns. Sounds too good to be true.

The ecosystem is full of examples like this - orjson is much faster than the `json` module, structlog can be configured to be much faster than `logging`, etc. Not everything needs to be in the standard library, where it incurs a maintenance burden on the core devs.

---

<div class="post-metadata">

**Author:** ![elis.byberi](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/elis.byberi/32/35937_2.png) [@elis.byberi](https://discuss.python.org/u/elis.byberi)\
**Post date:** [November 14, 2024, 2:37pm UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/3 "2024-11-14T14:37:25Z")

</div>

Python is designed with extensibility in mind! If you’re aiming for better performance, consider using `uvloop`, an ultra-fast event loop for asyncio. For additional performance-focused tools, explore libraries like [simdjson](https://simdjson.org/) and similar options.

---

<div class="post-metadata">

**Author:** ![drmason13](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/drmason13/32/22591_2.png) [@drmason13](https://discuss.python.org/u/drmason13)\
**Post date:** [November 14, 2024, 7:26pm UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/4 "2024-11-14T19:26:26Z")

</div>

I agree with the responses here. I guess I’m hoping for more confirmation regarding uvloop specifically.

I guess I thought that switching the event loop implementation to uvloop wouldn’t be a breaking change (since it’s a “drop in replacement”). I hadn’t considered that, just because it’s API is identical doesn’t mean it is not a maintenance burden

---

<div class="post-metadata">

**Author:** ![Tinche](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tinche/32/12507_2.png) [@Tinche](https://discuss.python.org/u/Tinche)\
**Post date:** [November 14, 2024, 7:29pm UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/5 "2024-11-14T19:29:49Z")

</div>

My experience with uvloop has always been great, so I encourage you to try it and see if it’s faster for your use case (almost certainly will be).

---

<div class="post-metadata">

**Author:** ![elis.byberi](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/elis.byberi/32/35937_2.png) [@elis.byberi](https://discuss.python.org/u/elis.byberi)\
**Post date:** [November 14, 2024, 8:08pm UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/6 "2024-11-14T20:08:00Z")

</div>

Does the fact that both PEP [492](https://peps.python.org/pep-0492/) and `uvloop` have the same [author](https://github.com/1st1) reassure you?

---

<div class="post-metadata">

**Author:** ![drmason13](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/drmason13/32/22591_2.png) [@drmason13](https://discuss.python.org/u/drmason13)\
**Post date:** [November 14, 2024, 8:23pm UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/7 "2024-11-14T20:23:48Z")

</div>

Yes it does, thank you for pointing that out

---

<div class="post-metadata">

**Author:** ![egorsmkv](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/egorsmkv/32/35175_2.png) [@egorsmkv](https://discuss.python.org/u/egorsmkv)\
**Post date:** [April 10, 2026, 6:39pm UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/8 "2026-04-10T18:39:39Z")

</div>

In case if you’re interested, I have been working on rsloop, an alternative event loop written in Rust, that in some cases is faster than uvloop: [GitHub - RustedBytes/rsloop: An event loop for asyncio written in Rust · GitHub](https://github.com/RustedBytes/rsloop)

---

<div class="post-metadata">

**Author:** ![ncoghlan](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/ncoghlan/32/14266_2.png) [@ncoghlan](https://discuss.python.org/u/ncoghlan)\
**Post date:** [April 11, 2026, 5:46pm UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/9 "2026-04-11T17:46:14Z")

</div>

> [@drmason13](#):
>
> I guess I thought that switching the event loop implementation to uvloop wouldn’t be a breaking change (since it’s a “drop in replacement”). I hadn’t considered that, just because it’s API is identical doesn’t mean it is not a maintenance burden

Aye, it’s the external dependency on `libuv` that we don’t want to bring into the core interpreter. As a third party module, `uvloop` can be updated as needed to harmonise different versions of `libuv` with different versions of Python, but if it’s directly in the standard library, everything gets more annoying to keep aligned.

---

<div class="post-metadata">

**Author:** ![tarasko](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tarasko/32/34238_2.png) [@tarasko](https://discuss.python.org/u/tarasko)\
**Post date:** [July 3, 2026, 6:58am UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/10 "2026-07-03T06:58:33Z")

</div>

It is faster. I routinely run a benchmark that checks asyncio vs uvloop among others for different message sizes and TCP vs SSL.

> <https://github.com/tarasko/aiofastnet/blob/master/examples/benchmark.png>

Both uvloop tasks scheduling and networking are faster.

Will switching to uvloop benefit your project depends on the project. For a small business logic and lots of networking I would definitely use uvloop.

---

<div class="post-metadata">

**Author:** ![lalinsky](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/lalinsky/32/36664_2.png) [@lalinsky](https://discuss.python.org/u/lalinsky)\
**Post date:** [July 23, 2026, 6:42am UTC](https://discuss.python.org/t/is-uvloop-still-faster-than-built-in-asyncio-event-loop/71136/11 "2026-07-23T06:42:02Z")

</div>

I’ve been working on an async I/O engine for Zig for the last year, and took a quick detour and implemented an asyncio evet loop based on the core of the engine. It’s about 10% faster than uvloop in most networking benchmarks (due to running on io\_uring by default, and having less abstractions than libuv → uvloop → asyncio), and also faster at raw callbacks/tasks, but along the way I realized it does not really care, because the moment you add a Python framework, the performance gets significantly reduced. The only reason for me bringing the project to an usable state was that it also has async file I/O, which is currently hard to get on asyncio otherwise.

> **[GitHub - lalinsky/blazio: Alternative asyncio event loop](https://github.com/lalinsky/blazio)**
>
> Alternative asyncio event loop
