Proyek Trio bertujuan untuk menghasilkan pustaka I/O async/await-native yang berkualitas produksi, berlisensi permisif, dan async/await-native untuk Python. Seperti semua perpustakaan async, tujuan utamanya adalah membantu Anda menulis program yang melakukan banyak hal secara bersamaan dengan I/O yang diparalelkan . Laba-laba web yang ingin mengambil banyak halaman secara paralel, server web yang perlu mengatur banyak unduhan dan koneksi soket web secara bersamaan, pengawas proses yang memantau beberapa subproses... hal-hal semacam itu. Dibandingkan dengan perpustakaan lain, Trio berupaya membedakan dirinya dengan fokus obsesif pada kegunaan dan kebenaran . Konkurensi itu rumit; kami mencoba membuatnya mudah untuk memperbaikinya .
Trio dibangun dari awal untuk memanfaatkan fitur-fitur Python terbaru, dan mengambil inspirasi dari banyak sumber, khususnya Curio karya Dave Beazley. Desain yang dihasilkan jauh lebih sederhana dibandingkan pesaing lama seperti asyncio dan Twisted, namun tetap mumpuni. Trio adalah perpustakaan Python I/O yang selalu saya inginkan; Menurut saya, hal ini membuat pembuatan program berorientasi I/O menjadi lebih mudah, mengurangi rawan kesalahan, dan lebih menyenangkan. Mungkin Anda akan menemukan hal yang sama.
Proyek ini masih muda dan masih bersifat eksperimental: desain keseluruhannya solid, dan fitur-fitur yang ada telah sepenuhnya diuji dan didokumentasikan, tetapi Anda mungkin menemukan fungsionalitas yang hilang atau sisi yang kasar. Kami menganjurkan Anda untuk menggunakannya, namun Anda harus membaca dan berlangganan edisi #1 untuk mendapatkan peringatan dan kesempatan memberikan umpan balik tentang perubahan apa pun yang dapat mengganggu kompatibilitas.
Saya ingin mencobanya! Luar biasa! Kami memiliki tutorial ramah untuk membantu Anda memulai; tidak diperlukan pengalaman sebelumnya dengan pengkodean async.
Ugh, saya tidak ingin membaca semua itu – tunjukkan beberapa kode! Jika Anda tidak sabar, berikut adalah contoh konkurensi sederhana, klien gema, dan server gema.
Bagaimana Trio membuat program lebih mudah dibaca dan dipikirkan dibandingkan pendekatan pesaing? Trio didasarkan pada cara berpikir baru yang kami sebut "konkurensi terstruktur". Pengenalan teoretis terbaik adalah artikel Catatan tentang konkurensi terstruktur, atau: Pernyataan Go dianggap berbahaya. Atau, lihat pembicaraan ini di PyCon 2018 untuk melihat demonstrasi penerapan algoritma "Happy Eyeballs" di perpustakaan lama versus Trio.
Keren, tapi apakah ini akan berfungsi di sistem saya? Mungkin! Selama Anda memiliki semacam Python 3.9 atau lebih baik (CPython atau versi PyPy3 yang saat ini dikelola keduanya baik-baik saja), dan menggunakan Linux, macOS, Windows, atau FreeBSD, maka Trio akan berfungsi. Lingkungan lain mungkin bisa berfungsi juga, namun lingkungan itulah yang kami uji. Dan semua dependensi kami adalah Python murni, kecuali CFFI di Windows, yang memiliki roda, jadi instalasinya akan mudah (tidak diperlukan kompiler C).
Saya mencobanya, tetapi tidak berhasil. Maaf mendengarnya! Anda dapat mencoba meminta bantuan di ruang obrolan atau forum kami, mengajukan bug, atau memposting pertanyaan di StackOverflow, dan kami akan melakukan yang terbaik untuk membantu Anda.
Trio itu luar biasa, dan saya ingin membantu menjadikannya lebih hebat! Kamu yang terbaik! Ada banyak pekerjaan yang harus dilakukan – mengisi fungsionalitas yang hilang, membangun ekosistem perpustakaan yang menggunakan Trio, pengujian kegunaan (misalnya, mungkin mencoba mengajari diri sendiri atau teman untuk menggunakan Trio dan membuat daftar setiap pesan kesalahan yang Anda temukan dan tempatkan di mana Anda bingung?), memperbaiki dokumen, ... lihat panduan kami untuk kontributor!
Saya tidak punya rencana segera untuk menggunakannya, tapi saya suka mempelajari desain perpustakaan I/O! Itu agak aneh? Tapi jujur saja, Anda akan cocok berada di sini. Kami memiliki seluruh sub-forum untuk mendiskusikan konkurensi terstruktur (pengembang sistem lain dipersilakan!). Atau lihat diskusi kami tentang pilihan desain, daftar bacaan, dan isu-isu yang diberi tag diskusi desain.
Saya ingin memastikan pengacara perusahaan saya tidak marah kepada saya! Jangan khawatir, Trio dilisensikan secara permisif berdasarkan MIT atau Apache 2 pilihan Anda. Lihat LISENSI untuk detailnya.
Kontributor diminta untuk mengikuti kode etik kami di semua ruang proyek.