Multithreading und Scheduling unter MicroPython

Weil uns das Thema ebenfalls hin und wieder umtreibt, gibt es hierzu eine kleine historische Rückschau und entsprechende Einordnungen.

Das klassische _thread Modul von MicroPython ist leider in unterschiedlichen Forks unterschiedlich gut ausgebaut.

Ja, davon gehe ich aus. Das MicroPython, von dem Pycom abzweigte, war damals hier noch recht unausgebaut.

Ausgehend von GitHub - micropython/micropython-esp32: Old port of MicroPython to the ESP32 -- new port is at https://github.com/micropython/micropython hatte Daniel Campora damals sowohl am threading als auch an der ble Unterstützung für MicroPython auf ESP32 gearbeitet.

Ohne es jetzt genauer zu wissen: Ich vermute dass aktuell das komplette Threading Subsystem direkt von Vanilla/Genuine MicroPython kommt. Umso mehr schade, dass Pycom auch dort so hinterherhinkt – vermutlich gerade deswegen, weil an dieser Stelle eigene Aspekte rund um super top halves im Bereich des Interrupt-Handlings realisiert wurden [1].

Vielleicht aber auch einfach nur, weil zu wenige Ressourcen oder Know-How dafür übrig sind, näher am Mainline von Vanilla/Genuine MicroPython zu bleiben und den eigenen Entwicklungsstand jeweils darauf zu portieren. Oh Fragmentation! [2]


  1. ↩︎
  2. MicroPython quo vadis ↩︎

Lightweight threading

Weitere Möglichkeiten zur Abarbeitung quasi-nebenläufiger Ausführungsfäden bieten leichtgewichtige Microthreads.

Ein frühes Ding in diesem Bereich ist der

Diese Reise geht in die Richtung, wie man “asynchronous programming” auf der Basis von kooperativem Multitasking oftmals realisiert.

Hintergrundinformationen

Ein Scheduler, der ein solches Pseudomultitasking-Konzept auf Basis von Koroutinen realisiert, nennt sich häufig auch Trampoline Scheduler.

If you are interested in more details about these asynchronous techniques, how they might be implemented on the system level and how all of this eventually relates to addressing The C10K problem, you might enjoy reading Lightweight Scaling — documents.

Im MicroPython-Land ist die Reisegruppe gerade hier angekommen.