Asyncio and The Pensieve Gui - GaryHendrick/Pensieve GitHub Wiki

Pensieve is built with asyncio, requiring a minimum python version of 3.4. Though Pensieve is designed for use on any workstation, the application of asyncio is in part motivated by a desire to build this code and the Pensieve generated code in a unified manner. It is hoped that the Pensieve generated code will run effectively on single core devices, such as the Raspberry Pi Zero.

The Event Loop

The asyncio event loop used in the Pensieve application will be built at the application entry point, and then fired up immediately afterward. It will have to build coroutines which keep the system running throughout its session, and only return upon the receipt of an appropriate .stop() invocation.

Subgenerators

Within the looping architecture of the loop manager, it will be necessary to have a subsystem prepared to spawn subgenerators to handle various Tasks such as those required to scan a video file, iterating it's frames. Those subgenerators must eventually return control to a central component which maintains the system lifecycle until such a time as a system exit is desirable.