iX 12/2016
S. 136
Praxis
Skriptsprachen
Aufmacherbild

Parallele Programmierung mit Python, Teil 2: Asynchrone Verarbeitung

Zeitversetzt

Ob ein Programm Aufgaben besser linear verarbeitet oder sie auf mehrere Prozesse verteilt, ist nicht zuletzt abhängig von der Anzahl der Aufgaben. In manchen Fällen jedoch ist die asynchrone Verarbeitung in einem Prozess das Mittel der Wahl.

Wie sich mit Pythons Standardpaketen threading und multiprocessing Programme mit mehreren gleichzeitigen Threads oder Prozessen relativ einfach implementieren lassen, hat der erste Teil dieses Tutorials gezeigt. Sollen aber mehrere Tausend Anfragen gleichzeitig bearbeitet werden, bietet sich eine andere Vorgehensweise an.

Seit der Version 3.5 von Python gibt es die neuen Befehle async und await. In der Dokumentation kann man nachlesen, dass diese für die asynchrone Verarbeitung mehrerer Aufgaben gut sind. Jeder Entwickler kennt die normalerweise verwendete Herangehensweise, also die synchrone Verarbeitung. Aber neben der asynchronen gibt es doch noch die Parallelverarbeitung mit Multithreading und Prozessen. Wo sind die Unterschiede zwischen den Verarbeitungsformen? Und wann ist es sinnvoll, die asynchrone Verarbeitung zu verwenden? Weiterhelfen kann ein Vergleich zwischen den verschiedenen Vorgehensweisen.