conference logo

Playlist "Grazer Linuxtage 2024"

Python, asyncio, libgpiod, and Pointless Blinking

Jörg Faschingbauer

Python's lovely [asyncio](https://docs.python.org/3/library/asyncio.html) library allows me to write event-driven programs in a style that looks much like multithreaded code but isn't. Combining [asyncio](https://docs.python.org/3/library/asyncio.html) with the equally lovely [Linux GPIO subsystem](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git) is just another logical step. In this talk I show what [asyncio](https://docs.python.org/3/library/asyncio.html) is, how [libgpiod](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git) works, and how both are used to do pointless projects.

Continuing the [story of pointlessly blinking lights](https://www.faschingbauer.me/about/site/work-in-progress/blink/glt2023/index.html) from my last year's talk, I show

* How GPIO interrupts are configured to get notified of hardware button presses, and how this can look like in Python (hint: *generators*, and *iteration*).
* How button-events can be used in an ``async`` programming style (hint: *asyncronous generators*, and ``async for``).
* How this fits into the pointless project of blinking lights.

Additionally, I give an overview of async libraries that are more to the point, like

* [Textual](https://textual.textualize.io), a terminal UI framework
* [python-sdbus](https://github.com/python-sdbus/python-sdbus), the Python binding for the systemd D-Bus client implementation

"Slide" material available on [my homepage](https://www.faschingbauer.me/about/site/work-in-progress/blink/glt2024/index.html)