Blockchain-Technologie

Asyncio in Python verständlich erklärt: Asyncio von Grund auf mit Generatoren selbstgebaut

Eine tiefgehende und verständliche Erklärung der Python Asyncio-Architektur auf Basis von Generatoren und Coroutinen zum besseren Verständnis asynchroner Programmierung und Event Loops.

Asyncio in Python verständlich erklärt: Asyncio von Grund auf mit Generatoren selbstgebaut

Die asynchrone Programmierung in Python ist seit der Einführung von Asyncio ein weit verbreitetes Paradigma, das viele Entwickler nutzen, ohne tatsächlich zu verstehen, wie es funktioniert. Oft wird Asyncio als eine Art Magie empfunden – man schreibt einfach async Funktionen, versieht sie mit await und alles läuft scheinbar problemlos. Doch was passiert wirklich hinter den Kulissen, wenn der Interpreter bei einem await anhält und dann zahlreiche Tasks scheinbar gleichzeitig ausgeführt werden? Wer übernimmt die Arbeit während des Wartens und wie werden die Ergebnisse an die entsprechenden Funktionen zurückgegeben? Diese Fragen wollen wir aufdröseln und das Geheimnis um Asyncio lüften, indem wir Asyncio von Grund auf neu aufbauen, Schritt für Schritt, und dabei ganz ohne Magie auskommen. Im Kern basiert Asyncio auf kooperativem Multitasking, das bedeutet, dass mehrere Aufgaben durch ausdrückliches Verwalten der Steuerung gemeinsam laufen, ohne sich gegenseitig zu blockieren.

Python stellt dafür Generatoren und Coroutinen zur Verfügung, mit denen sich Funktionen anhalten und wieder aufnehmen lassen. Genau diese Mechanismen bilden die Basis unseres eigenen Event Loops, der mehrere Aufgaben gleichzeitig bearbeiten kann, indem er jeweils bei einem bestimmten Punkt pausiert und später fortsetzt. Generatoren in Python sind spezielle Funktionen, die mit yield Werte zurückgeben und ihren Zustand dabei beibehalten. Jedes Mal, wenn eine yield-Anweisung erreicht wird, pausiert die Funktion und gibt den Wert zurück. Später kann die Funktion dort weiterlaufen, wo sie aufgehört hat. Interessanterweise können diese Generatoren auch Werte von außen erhalten durch die Methode send(), womit sie nicht nur Werte produzieren, sondern auch konsumieren können. Eine solche bidirektionale Kommunikation macht diese Generatoren zu Coroutinen, die perfekt geeignet sind für asynchrone und kooperative Programmierung.

Ein praktisches Beispiel ist die Erzeugung der Fibonacci-Zahlen mithilfe eines Generators, der bei jeder Iteration eine Zahl zurückgibt und dann pausiert. Daraus lässt sich eine weitere Coroutine erstellen, die nur gerade Zahlen filtert, indem sie Werte sendet bekommt und mit yield wieder pausiert. Dieses Prinzip zeigt, wie sich Funktionen fließend anhalten und fortsetzen lassen, je nachdem, welche Daten gerade verarbeitet werden oder auf welche Ereignisse gewartet wird. Um mehrere solcher Coroutinen zu verwalten und zwischen ihnen zu wechseln, brauchen wir einen Scheduler, der die Aufgaben organisiert. Eine einfache Methode dazu ist eine Warteschlange, in der Tasks abgelegt und nacheinander abgearbeitet werden. Im Scheduler laufen Tasks, die jeweils einen Zustand mit sich tragen. Sie werden der Reihe nach ausgeführt und pausieren mit yield oder await, sodass die Kontrolle zum Scheduler zurückkehrt und andere Tasks ausgeführt werden können.

Ist ein Task beendet, wird er aus der Warteschlange entfernt. Diese Art von Steuerung ermöglicht es, mehrere Operationen scheinbar parallel auszuführen, ohne dass mehrere Threads benötigt werden. Allerdings reicht das noch nicht aus, um wirklich asynchrone Funktionen effizient umzusetzen. Echte asynchrone Operationen benötigen eine Möglichkeit, auf Ergebnisse zu warten, die möglicherweise von außen oder einer anderen Quelle kommen, etwa das Lesen von Daten aus dem Netzwerk oder das Warten auf eine Zeitverzögerung. Hier kommen sogenannte Futures ins Spiel. Ein Future repräsentiert ein Ergebnis, das zu einem späteren Zeitpunkt verfügbar sein wird. Der Scheduler pausiert dann eine Coroutine, wenn sie auf ein Future wartet, und setzt sie erst fort, wenn das Future fertig ist und das Ergebnis vorliegt. Die Implementierung eines Futures umfasst einen Mechanismus, der periodisch überprüft, ob die Operation abgeschlossen ist.

Ist das der Fall, wird der auf das Future wartende Task mit dem Ergebnis wieder in die Ausführung aufgenommen. Dieser Polling-Mechanismus wird unterstützt durch Callbacks, die aktiviert werden, sobald das Future fertig ist. Somit ist der Scheduler in der Lage, Tasks nahtlos an den Stellen zu pausieren und fortzusetzen, an denen auf externe Ereignisse gewartet wird. Um das Ganze noch nutzerfreundlicher zu gestalten, wurden in Python die async- und await-Schlüsselwörter eingeführt. Diese sind syntaktischer Zucker und basieren intern auf den gewohnten Generator- und Future-Konzepten, bieten aber eine klarere und intuitivere Syntax zur Beschreibung asynchroner Programmierung. Das macht die Entwicklung von asynchronem Code nicht nur eleganter, sondern minimiert auch Fehler, da der Interpreter besser zwischen normalen Generatoren und Coroutinen unterscheiden kann.

Unsere benutzerdefinierte Future-Klasse kann daher durch Implementierung der __await__-Methode dafür sorgen, dass sie await-kompatibel wird und somit vom Python-Interpreter nahtlos in async/await-Strukturen eingebunden werden kann. Auf diese Weise entsteht ein eigenes kleines Ökosystem, das exakt die Funktionsweise von Asyncio reproduziert, allerdings mit dem Vorteil, dass der Programmierer jeden Schritt nachvollziehen und verstehen kann. Ein sehr anschauliches Beispiel für den praktischen Einsatz zeigt sich beim Implementieren eines nicht-blockierenden Sleep. Während ein normaler Zeitverzug in Python den ganzen Prozess blockieren und somit andere Tasks aufhalten würde, setzten wir eine Sleep-Klasse als Future ein, die nach Ablauf der Zeit ein Signal gibt und die jeweilige Coroutine fortsetzt. Dabei überwachen wir den aktuellen Zeitpunkt und ermitteln, ob die Wartezeit verstrichen ist, um das Future als „erledigt“ zu markieren.

Der Scheduler sorgt dann dafür, dass andere Tasks während der Wartezeit ausgeführt werden, was zu einem reaktiven und effizienten Ablauf führt. Der bisherige Aufbau lässt sich schließlich noch erweitern, um reale Eingabe-/Ausgabeoperationen in unser Framework einzubinden. Die Herausforderung besteht hier darin, nicht blockierende I/O-Operationen durchzuführen, etwa Netzwerksockets, die auf neue Daten oder Verbindungen warten. Die Python-Standardbibliothek liefert hierfür das Modul selectors, das eine Schnittstelle zu den Betriebssystem-Funktionen bereitstellt, über die man beobachten kann, wann ein Socket bereit für Lese- oder Schreiboperationen ist. Durch das Registrieren eines Sockets beim Selector und periodisches Abfragen ohne Blockierung kann unser Future feststellen, wann ein Ereignis eingetreten ist, und die entsprechende Coroutine wieder aufnehmen. Beispiele hierfür sind AcceptSocket, das auf neue eingehende Verbindungen wartet, und ReadSocket, das Daten von einem Socket liest.

Diese Futures integrieren sich nahtlos in unseren Scheduler und ermöglichen dadurch eine vollwertige asynchrone Netzwerkanwendung. Der Höhepunkt dieser Implementierung ist ein asynchroner Echo-Server, der völlig ohne Threads oder Prozesse auskommt und dennoch mehrere Clients gleichzeitig bedienen kann. Der Server akzeptiert neue Verbindungen durch Await auf AcceptSocket und startet für jeden Client eine neue Coroutine, die Daten vom Client liest und sofort wieder zurücksendet. Alle Tasks laufen über unseren selbstgeschriebenen Scheduler, der die Steuerung effizient verteilt und dabei die Wartezeiten komplett überbrückt. Die Erkenntnis aus diesem Projekt ist fundamental: Asyncio basiert auf einfachen, aber mächtigen Konzepten wie Generatoren, Koroutinen, Futures und einem Event Loop, der die Ausführung kooperativ an Tasks übergibt.

Der Schlüssel liegt im bewussten Pausieren und Fortsetzen von Funktionen sowie der engen Verzahnung mit dem Betriebssystem, das die eigentliche Arbeit übernimmt und mit Ereignissen den Scheduler informiert. Diese Klarheit erlaubt es, Asyncio nicht länger nur als Blackbox zu verwenden, sondern ein tiefes Verständnis für die Abläufe zu entwickeln, was insbesondere bei komplexeren Anwendungen mit Zeitüberschreitungen, Abbruchmechanismen oder Priorisierungen von Tasks von unschätzbarem Wert ist. Das Verständnis auf Generator-Ebene schenkt jedem Entwickler die Freiheit und das Rüstzeug, eigene asynchrone Frameworks zu bauen oder bestehende besser zu optimieren. Abschließend bleibt zu sagen, dass Asyncio keine Magie ist, sondern eine brillante Komposition einfacher mechanischer Konzepte, die zusammen ein komplexes und flexibles System ergeben. Die Arbeit mit yield und send ist der Kern, der den scheinbar mysteriösen await zum Leben erweckt.

Wer diese Basis kennt und versteht, verfügt über ein mächtiges Werkzeug, um hochperformante, asynchrone Programme in Python zu schreiben.

OKX Partnerinhalte

Registrieren Sie sich bei OKX und erhalten Sie Ihren Willkommensbonus

OKX ist eine Plattform für Spot- und Futures-Handel, P2P-Tausch und Krypto-Sparpläne. Ein neues Konto über diesen Link eröffnet Zugang zum Willkommensbonus-Programm: bis zu 10.000 USDT für Ihre ersten Schritte an der Börse.

Konto erstellen und Bonus erhalten →

18+ · Partnerlink. Kryptowährungen sind volatil: Sie können Ihre Einlage verlieren.

Als Nächstes
Meta bleibt Werbe-Marktführer: Warum die Anzeigenmetriken trotz Herausforderungen stark bleiben
Samstag, 14. November 2026. Meta bleibt Werbe-Marktführer: Warum die Anzeigenmetriken trotz Herausforderungen stark bleiben

Meta Platforms Inc. , das Unternehmen hinter sozialen Netzwerken wie Facebook und Instagram, hat sich erneut als starker Akteur im digitalen Werbemarkt bestätigt.

Warren Buffetts zeitlose Weisheiten: Von der Kindererziehung bis zu erfolgreichen Investitionen
Samstag, 14. November 2026. Warren Buffetts zeitlose Weisheiten: Von der Kindererziehung bis zu erfolgreichen Investitionen

Warren Buffett, ein Name, der in der Welt der Finanzen fast schon mythische Bedeutung erlangt hat, ist nicht nur für seine außergewöhnlichen Investitionen bekannt, sondern auch für die tiefgründigen Lebensweisheiten, die er im Laufe seiner beeindruckenden Karriere geteilt hat. Mit über 70 Jahren Erfahrung in der Finanzwelt und fast ebenso langer Zeit als Mentor hat Buffett eine Schatzkammer an Ratschlägen hinterlassen, die von der Kindererziehung bis hin zu klugen Investitionsentscheidungen reichen.

Warum XPeng Inc. (XPEV) im Jahr 2025 einen starken Aufschwung erlebt
Samstag, 14. November 2026. Warum XPeng Inc. (XPEV) im Jahr 2025 einen starken Aufschwung erlebt

Die jüngsten Entwicklungen rund um XPeng Inc. , einen führenden chinesischen Hersteller von intelligenten Elektrofahrzeugen, haben die Finanzwelt und die Automobilindustrie gleichermaßen in Erstaunen versetzt.

Die Faszination Künstlicher Intelligenz: Vom Skeptiker zum Bewunderer
Samstag, 14. November 2026. Die Faszination Künstlicher Intelligenz: Vom Skeptiker zum Bewunderer

In einer Zeit, in der Technologie unser Leben in rasendem Tempo verändert, bleiben auch Softwareentwickler nicht von den Umwälzungen durch Künstliche Intelligenz (KI) verschont. Für viele Programmierer war der Umgang mit KI in den letzten Jahren eine Herausforderung, oft begleitet von Skepsis, Misstrauen und einem Gefühl des Unbehagens.

Warum das Erlernen Mehrerer Programmiersprachen Ihre Karriere Als Entwickler Revolutionieren Kann
Samstag, 14. November 2026. Warum das Erlernen Mehrerer Programmiersprachen Ihre Karriere Als Entwickler Revolutionieren Kann

In der heutigen Zeit, in der sich die Technologie mit enormer Geschwindigkeit weiterentwickelt, ist es für Entwickler essenziell, nicht nur eine, sondern mehrere Programmiersprachen zu beherrschen. Viele Anfänger und sogar erfahrene Entwickler neigen dazu, sich auf eine sogenannte „Lieblingssprache“ zu spezialisieren, mit der sie sich vertraut fühlen.

Magic Eden erweitert sein Portfolio durch Übernahme der Trading-App Slingshot
Samstag, 14. November 2026. Magic Eden erweitert sein Portfolio durch Übernahme der Trading-App Slingshot

Magic Eden, einer der führenden Marktplätze für Non-Fungible Tokens (NFTs), hat die Übernahme der Trading-App Slingshot bekannt gegeben. Dieser strategische Schritt unterstreicht Magics Engagement, seine Dienstleistungen kontinuierlich zu erweitern und die Nutzererfahrung im Bereich des digitalen Handels zu verbessern.

Wie Sprachmodelle Empfehlungsalgorithmen revolutionieren können: Erkenntnisse und Zukunftspotenziale
Samstag, 14. November 2026. Wie Sprachmodelle Empfehlungsalgorithmen revolutionieren können: Erkenntnisse und Zukunftspotenziale

In der heutigen digitalen Welt sind Empfehlungssysteme unverzichtbar geworden, um Nutzern relevante Inhalte, Produkte oder Dienstleistungen vorzuschlagen. Traditionell basieren solche Systeme auf Verhaltensdaten wie Nutzer-Klicks, Käufen oder Bewertungen.

Weitere Artikel zum Thema
Trader setzen verstärkt auf nur eine Zinssenkung der Fed im Jahr 2025 vor den CPI-Daten
Samstag, 14. November 2026. Trader setzen verstärkt auf nur eine Zinssenkung der Fed im Jahr 2025 vor den CPI-Daten

Die Finanzmärkte weltweit beobachten mit großer Spannung die weitere Ausrichtung der Geldpolitik der US-Notenbank Federal Reserve (Fed). In den letzten Wochen ist deutlich geworden, dass Trader vermehrt ihre Wetten auf eine einzelne Zinssenkung im Jahr 2025 konzentrieren.

Norwegen Staatsfonds setzt auf Künstliche Intelligenz trotz skeptischer ROI-Studien
Samstag, 14. November 2026. Norwegen Staatsfonds setzt auf Künstliche Intelligenz trotz skeptischer ROI-Studien

Der Norwegen Staatsfonds, offiziell bekannt als Norges Bank Investment Management, gehört zu den größten und einflussreichsten souveränen Investmentfonds weltweit. Mit Milliarden an verwaltetem Kapital und einem breit aufgestellten Portfolio setzt der Fonds seit Jahren auf technologischen Fortschritt, um seine Verwaltung effizienter zu gestalten.

Warum Automobilhersteller Tarife von Preissteigerungen entlasten wollen
Samstag, 14. November 2026. Warum Automobilhersteller Tarife von Preissteigerungen entlasten wollen

Die Automobilindustrie durchlebt derzeit eine Phase bedeutender Preissteigerungen, die Konsumenten weltweit spüren. Während Verbraucher oft vermuten, dass Handelszölle einer der Hauptgründe für die höheren Kosten sind, bemühen sich viele Automobilhersteller darum, Tarife als Ursache auszuklammern.

Kraken startet Staking-Dienste in den USA neu: Alles, was Sie wissen müssen
Freitag, 13. November 2026. Kraken startet Staking-Dienste in den USA neu: Alles, was Sie wissen müssen

In der dynamischen Welt der Kryptowährungen hat Kraken, eine der führenden Krypto-Börsen, seine Staking-Dienste in den USA erneut eingeführt. Diese Entscheidung kommt zu einem Zeitpunkt, an dem das Interesse an Krypto-Investitionen stetig wächst und die Nachfrage nach diversifizierten Anlagemöglichkeiten zunimmt.