Async/Await in Python

Obwohl seit 2015 verfügbar, hat das mächtige Konstrukt async/await noch nicht den Einzug in den Mainstream gehalten. In der Regel arbeiten Python-Beispiele im Internet nicht mit async/await und wichtige Bibliotheken wie Tkinter, numpy und matplotlib unterstützen es nicht.

Möglicherweise liegt die zögerliche Annahme der Python-Gemeinde daran, dass Python traditionell mit Parallelität, Nebenläufigkeit und Multitasking nichts am Hut hat und sich damit auch eher schwer tat (Stichwort GIL = Global Interpreter Lock). In der Regel wurde Parallelität/Nebenläufigkeit durch mehrere Prozesse gelöst, was aber gewisse Nachteile mit sich bringt. Ohnehin ist Ease-of-Use gegenüber der Komplexität von Multi-Threading-Mechanismen von jeher der pythonischere Ansatz.

Dank async/await kann man aber sehr einfach, nahezu ohne jeden Mehraufwand, die Programme in die Lage versetzen, nebenläufig zu sein. Mit dem nötigen Hintergrundwissen kann man darüber hinaus elegant komplexe nebenläufige Programme entwerfen, ohne dazu komplizierte Threading-Mechanismen anwenden oder gar kennen zu müssen.

Das Framework Tornado nutzt asynchrone Funktionen (die auch Coroutines genannt werden) und erreicht eine großartige Leistung. Neben grundsätzlichen Beispielen zum Thema async/await werfen wir auch einen kurzen Blick in diese Bibliothek. Am Ende des Vortrages sollte es jedem Teilnehmer verständlich sein, warum asynchrone Funktionen ein Erfolgsrezept sind.

Vorkenntnisse

* Grundlegende Multi-threading-Kenntnisse sind hilfreich

Lernziele

* Async/Await in Python anwenden können

 

Speaker

 

Martin Meeser
Martin Meeser ist freiberuflicher Dipl.-Inf.(Uni) und entwickelt seit dem 9. Lebensjahr Software, seit 2004 professionell. Aktuell 2 MAs, Kunden im Bereich Raumfahrt, Radio-Astronomie, Medizintechnik, insgesamt 26 Projekte bei 14 Unternehmen in den genannten Bereich sowie Automation, Automotive, Finance, Industry und Telecommunication.

enterPy-Newsletter

Sie möchten über die enterPy
auf dem Laufenden gehalten werden?

 

Anmelden