diff options
Diffstat (limited to 'examples/async/eratosthenes/doc/eratosthenes.rst')
-rw-r--r-- | examples/async/eratosthenes/doc/eratosthenes.rst | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/examples/async/eratosthenes/doc/eratosthenes.rst b/examples/async/eratosthenes/doc/eratosthenes.rst index fdb095a91..56e9f391b 100644 --- a/examples/async/eratosthenes/doc/eratosthenes.rst +++ b/examples/async/eratosthenes/doc/eratosthenes.rst @@ -1,18 +1,21 @@ -Async examples -============== +Async "Eratosthenes" Example +============================ The Python language provides keywords for asynchronous operations, i.e., "async" to define coroutines or "await" to schedule asynchronous calls in the event loop (see `PEP 492 <https://peps.python.org/pep-0492/>`_). It is up to packages to implement an event loop, support for these keywords, and more. -One such package is `trio`. Since both an async package and Qt itself work with -event loops, special care must be taken to ensure that both event loops work -with each other. trio offers a dedicated `low-level API +The best-known package for this is `asyncio`. asyncio offers an API that allows +for the asyncio event loop to be replaced by a custom implementation. Such an +implementation is available with the `QtAsyncio` module. It is based on Qt and +uses Qt's event loop in the backend. + +`trio` is another popular package that offers a dedicated `low-level API <https://trio.readthedocs.io/en/stable/reference-lowlevel.html>`_ for more -complicated use cases such as this. Specifically, there exists a function -`start_guest_run` that enables running the Trio event loop as a "guest" inside -another event loop - Qt's in our case. +complex use cases. Specifically, there exists a function `start_guest_run` that +enables running the Trio event loop as a "guest" inside another event loop - +Qt's in our case, standing in contrast to asyncio's approach. Based on this functionality, two examples for async usage with Qt have been implemented: `eratosthenes` and `minimal`: @@ -30,13 +33,7 @@ implemented: `eratosthenes` and `minimal`: boilerplate code is essential for an async program with Qt and offers a starting point for more complex programs. -Both examples feature: - -1. A window class. -2. An `AsyncHelper` class containing `start_guest_run` plus helpers and - callbacks necessary for its invocation. The entry point for the Trio guest - run is provided as an argument from outside, which can be any async function. - -While `eratosthenes` offloads the asynchronous logic that will run in trio's -event loop into a separate class, `minimal` demonstrates that async functions -can be integrated into any class, including subclasses of Qt classes. +While `eratosthenes` offloads the asynchronous logic that will run in +trio's/asyncio's event loop into a separate class, `minimal` demonstrates that +async functions can be integrated into any class, including subclasses of Qt +classes. |