Das Trio-Projekt zielt darauf ab, eine asynchrone/await-native I/O-Bibliothek in Produktionsqualität mit freizügiger Lizenz für Python zu erstellen. Wie alle asynchronen Bibliotheken besteht ihr Hauptzweck darin, Ihnen beim Schreiben von Programmen zu helfen, die mit parallelisierter E/A mehrere Dinge gleichzeitig erledigen. Ein Web-Spider, der viele Seiten parallel abrufen möchte, ein Webserver, der viele Downloads und WebSocket-Verbindungen gleichzeitig bewältigen muss, ein Prozess-Supervisor, der mehrere Unterprozesse überwacht ... so etwas in der Art. Im Vergleich zu anderen Bibliotheken versucht sich Trio durch einen zwanghaften Fokus auf Benutzerfreundlichkeit und Korrektheit hervorzuheben. Parallelität ist kompliziert; Wir versuchen, es einfach zu machen, alles richtig zu machen.
Trio wurde von Grund auf so entwickelt, dass es die neuesten Python-Funktionen nutzt, und lässt sich von vielen Quellen inspirieren, insbesondere von Dave Beazleys Curio. Das resultierende Design ist radikal einfacher als ältere Konkurrenten wie Asyncio und Twisted, aber dennoch genauso leistungsfähig. Trio ist die Python-I/O-Bibliothek, die ich immer wollte; Ich finde, dass es das Erstellen von I/O-orientierten Programmen einfacher macht, weniger fehleranfällig ist und einfach mehr Spaß macht. Vielleicht finden Sie das Gleiche.
Dieses Projekt ist jung und noch einigermaßen experimentell: Das Gesamtdesign ist solide und die vorhandenen Funktionen sind vollständig getestet und dokumentiert, aber es kann sein, dass Sie auf fehlende Funktionalität oder Ecken und Kanten stoßen. Wir empfehlen Ihnen, es zu verwenden, aber Sie sollten Ausgabe Nr. 1 lesen und abonnieren, um eine Warnung zu erhalten und die Möglichkeit zu haben, Feedback zu Änderungen zu geben, die die Kompatibilität beeinträchtigen.
Ich will es ausprobieren! Eindrucksvoll! Wir haben ein freundliches Tutorial, das Ihnen den Einstieg erleichtert. Es sind keine Vorkenntnisse in der asynchronen Codierung erforderlich.
Ugh, ich will das alles nicht lesen – zeig mir etwas Code! Wenn Sie ungeduldig sind, finden Sie hier ein einfaches Beispiel für Parallelität, einen Echo-Client und einen Echo-Server.
Wie macht Trio es einfacher, Programme zu lesen und darüber nachzudenken als konkurrierende Ansätze? Trio basiert auf einer neuen Denkweise, die wir „strukturierte Parallelität“ nennen. Die beste theoretische Einführung ist der Artikel Hinweise zur strukturierten Parallelität oder: Go-Anweisung gilt als schädlich. Oder schauen Sie sich diesen Vortrag auf der PyCon 2018 an, um eine Demonstration der Implementierung des „Happy Eyeballs“-Algorithmus in einer älteren Bibliothek im Vergleich zu Trio zu sehen.
Cool, aber funktioniert es auf meinem System? Wahrscheinlich! Solange Sie eine Art Python 3.9 oder höher haben (CPython oder aktuell gewartete Versionen von PyPy3 sind beide in Ordnung) und Linux, macOS, Windows oder FreeBSD verwenden, wird Trio funktionieren. Andere Umgebungen könnten auch funktionieren, aber das sind die, in denen wir testen. Und alle unsere Abhängigkeiten sind reines Python, mit Ausnahme von CFFI unter Windows, das über Räder verfügt, sodass die Installation einfach sein sollte (kein C-Compiler erforderlich).
Ich habe es versucht, aber es funktioniert nicht. Tut mir leid, das zu hören! Sie können versuchen, in unserem Chatroom oder Forum um Hilfe zu bitten, einen Fehler zu melden oder eine Frage auf StackOverflow zu posten, und wir werden unser Bestes tun, um Ihnen zu helfen.
Trio ist großartig und ich möchte dazu beitragen, es noch großartiger zu machen! Du bist der Beste! Es gibt jede Menge Arbeit zu tun – fehlende Funktionalität zu ergänzen, ein Ökosystem von Trio-verwendenden Bibliotheken aufzubauen, die Benutzerfreundlichkeit zu testen (z. B. versuchen Sie vielleicht, sich selbst oder einem Freund beizubringen, Trio zu verwenden, und erstellen Sie eine Liste aller Fehlermeldungen, auf die Sie stoßen, und platzieren Sie sie wo). Sie waren verwirrt?), die Dokumentation verbessern, ... schauen Sie sich unseren Leitfaden für Mitwirkende an!
Ich habe keine unmittelbaren Pläne, es zu verwenden, aber ich liebe es, mich mit dem Design von I/O-Bibliotheken zu beschäftigen! Das ist ein bisschen seltsam? Aber seien wir mal ehrlich: Du wirst hier großartig reinpassen. Wir haben ein ganzes Unterforum zur Diskussion strukturierter Parallelität (Entwickler anderer Systeme willkommen!). Oder schauen Sie sich unsere Diskussion über Designentscheidungen, die Leseliste und die Themen mit dem Tag „design-discussion“ an.
Ich möchte sicherstellen, dass die Anwälte meines Unternehmens nicht wütend auf mich werden! Keine Sorge, Trio ist freizügig unter Ihrer Wahl MIT oder Apache 2 lizenziert. Weitere Informationen finden Sie unter LIZENZ.
Mitwirkende werden gebeten, unseren Verhaltenskodex in allen Projektbereichen zu befolgen.