qasync
Python library for using asyncio in Qt-based applications
Decision gist · record as of 2026-08-14
Yes. qasync is actively maintained, has no external dependencies, carries a permissive license, and solves a real pain point—integrating asyncio into Qt apps cleanly. The codebase is stable (Production/Stable classifier), tested across major platforms, and has seen regular updates. Install it if you're building a PyQt/PySide application and want to use async/await instead of threading.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires PyQt5, PyQt6, PySide2, or PySide6 to be installed separately; Python >=3.8 required.
- Low friction: pure Python wheel with no runtime dependencies.
- Actively maintained as of July 2026 with 405 repository stars and a clear maintenance commitment stated in the project.
License · maintenance · safety
BSD-2-Clause (permissive) — BSD-2-Clause permissive license allows use, modification, and redistribution with minimal restrictions—suitable for both open and closed projects.
last release 2025-08-28 (351 days) · last repo commit 2026-07-06 · 405 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 370,908 downloads/mo, #7,173 on PyPI
Alternatives
Verify before relying
pip install qasync
from qasync import QApplication, QEventLoop
import asyncio
app = QApplication(sys.argv)
loop = QEventLoop(app)
asyncio.set_event_loop(loop)
# Use async functions in Qt slots and event handlers- Whether the package works with all four Qt bindings (PyQt5/6, PySide2/6) equally well or has known limitations with any.
- Performance characteristics when running CPU-intensive tasks via QThreadExecutor compared to standard threading approaches.
- Compatibility with recent Python 3.13+ versions given the stated support ceiling of <3.14.
What it is and what it does
qasync bridges asyncio and Qt by implementing a PEP 3156 event loop that runs inside a Qt application's main thread. This lets you write async/await code directly in PyQt/PySide event handlers and slots, replacing the need for manual threading with cleaner, more readable coroutine-based logic.
The package provides decorators like @asyncSlot and @asyncClose to mark async event handlers, and exposes run_in_executor for CPU-bound work on thread pools. It has no runtime dependencies beyond a Qt binding (PyQt5/6 or PySide2/6) and maintains active development with support for Python 3.8 and later.
Use it for
- Build responsive Qt GUIs that fetch data from APIs without blocking the UI thread using async/await.
- Replace QThread boilerplate with cleaner asyncio patterns for background tasks in PyQt/PySide apps.
- Coordinate multiple concurrent operations (timers, I/O, network calls) within a single Qt event loop.
- Offload CPU-intensive work to thread pools via run_in_executor while keeping the UI responsive.
- Migrate existing asyncio codebases to Qt-based desktop applications without rewriting async logic.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
qasync is actively maintained, has no external dependencies, carries a permissive license, and solves a real pain point—integrating asyncio into Qt apps cleanly. The codebase is stable (Production/Stable classifier), tested across major platforms, and has seen regular updates. Install it if you're building a PyQt/PySide application and want to use async/await instead of threading.
Install
qasync on PyPI
Before you install
Low friction: pure Python wheel with no runtime dependencies. Actively maintained as of July 2026 with 405 repository stars and a clear maintenance commitment stated in the project.
Requires PyQt5, PyQt6, PySide2, or PySide6 to be installed separately; Python >=3.8 required.
License in practice
BSD-2-Clause permissive license allows use, modification, and redistribution with minimal restrictions—suitable for both open and closed projects.
Quickstart
pip install qasync
from qasync import QApplication, QEventLoop
import asyncio
app = QApplication(sys.argv)
loop = QEventLoop(app)
asyncio.set_event_loop(loop)
# Use async functions in Qt slots and event handlers
Verify before relying
- Whether the package works with all four Qt bindings (PyQt5/6, PySide2/6) equally well or has known limitations with any.
- Performance characteristics when running CPU-intensive tasks via QThreadExecutor compared to standard threading approaches.
- Compatibility with recent Python 3.13+ versions given the stated support ceiling of <3.14.
Package facts
| License | BSD-2-Clause permissive |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 351 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 370,908 / month, #7,173 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: X11 Applications :: QtIntended Audience :: DevelopersOperating System :: MacOSOperating System :: MacOS :: MacOS XOperating System :: MicrosoftOperating System :: Microsoft :: WindowsOperating System :: POSIXOperating System :: POSIX :: LinuxTopic :: Software Development :: Libraries :: Python Modules |
Evidence: qasync-0.28.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “asyncio in qt applications”
- qasyncqasync integrates asyncio coroutines into PyQt/PySide applications by…
- pyvistaqtPyVistaQt integrates VTK 3D visualization with Qt GUI frameworks,…
- PyQt6PyQt6 provides Python bindings for Qt v6, enabling Python developers…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also nest-asyncio · QtPy · qtmonaco · PySide6 · superqt · nest-asyncio2 · aioprocessing · asyncio · syncer · asyncio-atexit